こんにちは。入社2年目の山本崇史です。
PHPを触っていると避けては通れないものの一つにHTTPステータスコードがあります。その中でも個人的によく見かけるものをざっくりまとめてみました。エラーが出たときはひとまず何番のエラーが出ているか確認してみましょう。
HTTPステータスコードとは
特定のHTTPリクエストが正常に完了したかどうかを示す3桁の数字のこと。
大雑把に紹介すると次の5つに分類されます:
- 1xx(情報レスポンス)
- 2xx(成功レスポンス)
- 3xx(リダイレクトメッセージ)
- 4xx(クライアントエラーレスポンス)
- 5xx(サーバエラーレスポンス)
個人的によく見るのは、成功した時の200、エラーが出た時の400、500番台あたり。
もっと詳しく
1xx(情報レスポンス)
100番台は特に見かけることがなく、あまり馴染みがないですが、1つだけ紹介してみます。
100 Continue
暫定レスポンス。その時点までの全てに問題がなく、クライアントはリクエストを継続できることを示す。
2xx(成功レスポンス)
200 OK
リクエストが成功したことを示す。上手くいっているときはこれが出るはず。
3xx(リダイレクトメッセージ)
301 Moved Permanently
リクエストされたリソースのURLが永遠に変更されたことを示す。ウェブサイトが移転したときなどに用いられる。
302 Found
リクエストされたリソースが一時的に移動されているときに返される。
304 Not Modified
キャッシュ用に使用される。リクエストしたリソースが更新されていないことを示す。
4xx(クライアントエラーレスポンス)
400 Bad Request
サーバがクライアントのリクエストを理解できないことを示す。
403 Forbidden
リソースにアクセスすることを拒否されたときに返される。アクセスする権限がない場合などに用いられる。
404 Not Found
サーバがリクエストされたリソースを発見できないことを示す。
419 Invalid CSRF tokens
無効なCSRFトークン。Laravelで使用される。個人的にはまだ出会ったことはないが、今後出会うかもしれないので紹介。
422 Unprocessable Content
サーバに渡されたデータに誤りがあり、適切に処理を完了できなかったときに返される。
429 Too Many Requests
一定時間に大量のリクエストを送信したために、サーバが処理を拒否する場合に返される。Laravelの場合、同一ユーザまたは同一IPからのリクエストが1分間に60回を超えると出る設定になっている(調整可能)。特にAPIを呼び出すときに注意したい。
5xx(サーバエラーレスポンス)
500 Internal Server Error
サーバ内部でエラーが発生した場合に返される。おそらく最もよく見かけるエラー。これだけだと何が起きているのか把握しきれないので、コードやログなどを確認する必要がある。
502 Bad Gateway
ゲートウェイやプロキシとして機能するサーバが上流のサーバから無効なレスポンスを受け取ったことを示す。
開発をしていて出会ったことはないですが、インターネットで調べ物をしているときにたまにこういうエラーが表示されるサイトがあったりします。
503 Service Unavailable
サービスが一時的に過負荷やメンテナンスで使用不可能であるときに返される。Laravelではphp artisan down
でメンテナンスモードに切り替えたときに出てくる。
504 Gateway Timeout
ゲートウェイやプロキシとして機能するサーバが上流のサーバから時間内に適切なレスポンスを受け取ることができなかったことを示す。
最後に
他にもHTTPステータスコードはたくさんあります。HTTP Catsの猫に癒されながら、楽しく学んでいきましょー!!
参考
HTTP Cats
https://http.cat
http.cat (GitHub)
https://github.com/httpcats/http.cat
ライセンス
https://github.com/httpcats/http.cat/blob/master/LICENSE
HTTP レスポンスステータスコード - HTTP | MDN
https://developer.mozilla.org