このような「問題」はサーバー側にあります。クライアントは整形式の要求を行いましたが、サーバーはそれを満足できません。したがって、「サーバーエラー」、5xxステータスコードを使用する傾向があります。
Quoth RFC 7231(現在のHTTP標準、強調が追加されています):
ステータスコードの5xx(サーバーエラー)クラスは、サーバーがエラーを検出したか、要求されたメソッドを実行できないことをサーバーが認識していることを示します。HEADリクエストに応答する場合を除いて、サーバーは、エラー状況の説明と、それが一時的な状態か永続的な状態かを含む表現を送信する必要があります(SHOULD)。
注意
- 「エラーが発生したか、リクエストを実行できません」:「サーバーエラー」というタイトルにもかかわらず、サーバーエラーだけではありません。
- 「一時的または永続的」:これらのコードは、あなたのような一時的に利用できないリソースに適しています。
利用可能なコードのうち、503、「Service Unavailable」が最適でした。
503(Service Unavailable)ステータスコードは、一時的な過負荷または定期メンテナンスのために、サーバーが現在リクエストを処理できないことを示しています。サーバーは、リクエストを再試行する前にクライアントが待機する適切な時間を提案するために、Retry-Afterヘッダーフィールドを送信する場合があります。
注意:
- 「少し遅れて緩和される可能性が高い」:ケースに当てはまります。
- 「一時的な過負荷」:あなたのケースでは、はっきりとは当てはまりません。ただし、サーバーがはるかに高速である場合、クライアントが要求を行ったときにバッチ処理が既に行われているため、それは一種の「過負荷」です。つまり、クライアントはサーバーが実行できるよりも速くリソースを要求しています。それらは利用可能です。
- 再試行はサービスに適しているため、返信には
Retry-After
値を含める必要があります。バッチプロセスの次の実行の推定完了時間、またはバッチプロセスの実行間隔を値として提供できます。
独自の5xxステータスコード(たとえば、591)を定義すると、は許可されますが、セマンティクスが正しくなくなります。
クライアントは、最初の桁で示されるように、ステータスコードのクラスを理解し、認識されないステータスコードをそのクラスのx00ステータスコードと同等のものとして扱う必要があります。
クライアントは、自分のステータスコードを500「内部サーバーエラー」として扱いますが、これは正しくありません。