「Webを支える技術」のまとめです。
HTTP
HTTPのなかでも、ステータスコードについてまとめました。
ステータスコード
HTTPはリクエスト/レスポンス型のプロトコルです。すべてのリクエストにはレスポンスが返ります。リクエストの結果得られるレスポンスメッセージの中で、その意味を伝えるステータスコードについて見ていきます。
ステータスコードの分類と意味
ステータスコードは3桁の数字であり、先頭の数字によって5つに分類することが出来ます。
1xx:処理中
処理が継続していることを示します。クライアントはそのままリクエストを継続するか、サーバの指示に従ってプロトコルをアップデートして再送信します。
2xx:成功
リクエストが成功したことを示します。
3xx:リダイレクト
他のリソースへのリダイレクトを示します。クライアントはこのステータスコードを受け取ったとき、レスポンスメッセージのLocationヘッダを見て、新しいリソースへ接続します。
4xx:クライアントエラー
クライアントエラーを示します。原因はクライアントのリクエストにあります。エラーを解消しない限り正常な結果を得られないので、同じリクエストをそのまま再送信することはできません。
5xx:サーバエラー
サーバエラーを示します。原因はサーバ側にあります。サーバ側の原因を解消すれば、同一のリクエストを再送信して正常な結果が得られる可能性があります。
このように、ステータスコードを先頭の数字で分類することで、クライアントはとりあえず先頭の数字を見ればサーバがどのようなレスポンスを返しているのかを理解でき、クライアント側でどのような処理を行うべきか知ることが出来ます。
また、ステータスコードがあとから追加された場合も、先頭の数字の約束さえ守っていれば、クライアントは最低限の処理で対応することが出来ます。
よく使われるステータスコード
200 OK
リクエストが成功した場合に出力されます。
201 Created
リソースを新たに作成できたことを示します。POSTとPUTのレスポンスとして返ります。
また、POSTの場合には、新しく作成したリソースのURIはレスポンスのLocationヘッダに絶対URIとして入ります。
301 Moved Permanently
リクエストで指定したリソースが新しいURIに移動したことを示します。古いURIを保ちつつ、新しいURIに移行する際に用いられます。新しいURIはレスポンスのLocationヘッダに絶対URIとして入ります。
303 See Other
リクエストに対する処理結果が別のURIで取得できることを示します。例えばブラウザからPOSTでリソースを操作した結果をGETで取得するときに使用します。
401 Unauthorized
適切な認証情報を与えずにリクエストを行ったことを示します。レスポンスのWWW-Wuthenticateヘッダで、クライアントに対して認証方式を示します。
404 Not Found
指定したリソースが見つからなかったことを示します。レスポンスにはその理由が入ります。
500 Internal Sever Error
サーバ側で何かしらのエラーが生じていて、正しいエスポンスを返せないことを示します。レスポンスボディにはその理由が返ります。
503 Sever Unavailable
サーバがメンテナンスなどで一時的にアクセスできないことを示します。レスポンスボディにはその理由が返ります。レスポンスのRetry-Afterヘッダで、再開時期がおよそ何秒後かを通知することもできます。
まとめ
ステータスコードは大きく分けて5つに分類でき、それぞれに意味があります。ステータスコードを正しく使用することは大切なことです。設定する際は、よく考えましょう!