HTTP status codeとは何か? すべてのリクエストの結果
HTTP status codeとは、サーバーがすべての応答とともにリクエストの結果を報告するために返す3桁の番号で、成功、リダイレクト、クライアントエラー、サーバーエラーを示すファミリーにグループ分けされています。
status codeは、サーバーがクライアントに何が起きたかを伝える方法です。pipelineはほぼ完全にHTTPでウェブとやり取りするため、status codeを読むことは、ステップがなぜ成功または失敗したかを理解する最速の方法です。最初の1桁だけで、会話のどちら側で問題が起きたかがわかります。
5つのファミリー
- 1xx 情報提供、直接見ることは稀。
- 2xx 成功、200 OKや201 Createdなど。
- 3xx 別の場所へのリダイレクト。
- 4xx クライアントエラー、400、401、404など。
- 5xx サーバーエラー、500、502、503など。
クライアント対サーバーの過失
4xxはあなたのリクエストが誤っていたことを意味します。不正な入力、authの欠落、リソースの欠落です。5xxはサーバーが有効なリクエストの処理に失敗したことを意味します。この切り分けは、呼び出しが失敗したときに最初に確認すべきことです。
retry可能かどうか
ほとんどの4xxエラーは、リクエスト自体を変える必要があるためretry可能ではなく、429が注目すべき例外です。多くの5xxエラーは一時的で、backoffの後にretryする価値があります。
CIにおけるstatus code
pipelineは、APIステップの成功か失敗をそのstatus codeで決めます。2xxは進み、4xxは通常fail fastし、5xxは失敗する前にretryをトリガーするかもしれません。
リダイレクトは驚かせることがある
クライアントが追わない3xxリダイレクトは、失敗のように見えることがあります。ツールは通常リダイレクトを追いますが、誤設定されたものはauthヘッダーを落としたりループしたりすることがあります。
retryロジックを駆動する
賢いretryロジックはstatus codeに基づきます。5xxと429ではbackoffし、他の4xxではfail fastします。Latchkeyのrunnerはまさにこの区別を適用し、一般的なエンドポイントへの一時的な5xxと429の応答をretryしつつ、本当の4xxエラーは表面化させます。
重要なポイント
- HTTP status codeは、リクエストの結果を5つの番号付きファミリーで報告します。
- 4xxはクライアントの過失、5xxはサーバーの過失であり、これがデバッグを導きます。
- 5xxと429はしばしばretry可能ですが、他の4xxエラーは修正されたリクエストが必要です。