DevOps Infrastructure

HTTPステータスコード:200、404、502、503を読んで、問題がどこにあるかを見極める

2026年10月31日 1 分で読めます 20 ビュー

APIを呼び出すと502が返ってきた。フロントエンドのコードは正しく見えるし、再送しても失敗する。あらゆるものを疑い始めてしまう。しかし、このステータスコードは読み方を知っていれば、問題の所在をかなり明確に教えてくれている。

HTTPステータスコードとは

ブラウザやアプリがサーバーにリクエストを送るたびに、サーバーはレスポンスとともに3桁のステータスコードを返す。コードは結果を示す。成功なのか、リダイレクトなのか、クライアントのエラーなのか、サーバーのエラーなのか。レスポンス本文の代わりになるものではないが、問題が起きたときに最初に確認すべき情報だ。

これらのコードはRFC 9110で標準化されており、それぞれに固定の意味がある。そのため、ブラウザ、プロキシ、HTTPライブラリなど、どのツールも同じ意味で解釈できる。

5つのクラスと責任の所在

先頭の数字がクラスを示す。

クラス        意味主な責任の所在
1xx情報提供、処理中日常の開発ではほとんど見ない
2xx成功エラーなし
3xxリダイレクトURL設定を確認する必要がある
4xxクライアントエラー送ったリクエストが不正、または権限がない
5xxサーバーエラーサーバー、ゲートウェイ、またはその先のサービスに問題がある

最も単純なルールは次のとおり。4xxは通常、呼び出し側がリクエストを直す必要があることを意味し、5xxは通常、受け手側が自分のシステムを確認する必要があることを意味する。

日常でよく見るコード

200(OK)はリクエストが成功し、レスポンスに内容があることを示す。201(Created)は新しいリソースが作成されたことを示し、APIでデータを追加したときによく見られる。

301と302はブラウザを別のURLへ移動させる。301は恒久的、302は一時的なリダイレクトだ。サイトのURL構造を変えた後、誤ったリダイレクトが問題を起こすことはよくある。

400(Bad Request)はサーバーがリクエストを理解できなかったことを示す。多くの場合、JSONの形式が不正か、パラメータが欠けている。401(Unauthorized)は認証が不足していることを示す。ログインしていない、またはトークンが期限切れといった状態だ。403(Forbidden)は認証はされているが権限がないことを示す。401と403の混同は非常によくあるので、違いを覚えておく価値がある。

404(Not Found)はそのアドレスにリソースが存在しないことを示す。APIの場合は通常、レコードが見つからなかったことを意味するが、必ずしもそうとは限らない。

500(Internal Server Error)は、サーバーが予期しない障害に遭遇したことを示す。多くは未処理の例外が原因だ。502(Bad Gateway)は、ゲートウェイまたはプロキシが、その背後のサーバーから不正なレスポンスを受け取ったことを示す。503(Service Unavailable)は、サーバーが一時的にリクエストを処理できないことを示し、過負荷やメンテナンスが原因であることが多い。504(Gateway Timeout)は、ゲートウェイが上流のサーバーの応答を待ちすぎて、何も返ってこなかったことを示す。

ステータスコードで問題の範囲を絞り込む

問題が起きたら、まずコードを確認する。4xxなら、リクエスト自体を確認する。URL、メソッド、ヘッダー、ボディ、トークンなどだ。5xxなら、ログと各コンポーネントの状態を見て、サーバー、ゲートウェイ、その先のサービスのどれが失敗しているかを特定する。502、503、504の場合、リクエストの経路は見た目より長いことが多いので、各区間を確認する必要がある。

注意点として、すべてのAPIが正しいコードを返すわけではない。業務エラーでも200を返し、ボディのerrorフィールドにエラーを入れるケースがある。ステータスコードは出発点であり、最終的な結論ではない。必ずレスポンス本文とログも合わせて確認しよう。

数百個のコードを暗記する必要はない。クラスを覚え、よく出る数個のコードを覚え、まずどちら側の問題かを問う。それだけでデバッグの時間は大きく減る。

出典

ビジネス変革の準備はできていますか?

AIとデジタル変革の活用について、ぜひご相談ください。

よくある質問

HTTPステータスコードとは?
サーバーがレスポンスごとに返す3桁のコードで、リクエストが成功したか、リダイレクトされたか、クライアントまたはサーバー側で失敗したかを示す。
4xxと5xxの違いは?
4xxはクライアント側のエラーで、通常はリクエストを修正して解決する。5xxはサーバー、ゲートウェイ、またはその先のサービスの障害で、受け手側の確認が必要。
401と403の違いは?
401は未認証(ログインしていない、トークンの期限切れ)。403は認証済みだがアクセス権がない。
502、503、504の違いは?
502はゲートウェイが上流サーバーから不正な応答を受けた状態。503はサーバーが一時的に処理できない状態(過負荷、メンテナンス)。504はゲートウェイが上流の応答を待ちきれずタイムアウトした状態。
APIは常に正しいステータスコードを返すのか?
返さない。業務エラーでも200を返し、ボディにerrorフィールドを入れるAPIがあるため、レスポンス本文とログも必ず確認する。

記事をシェア