HTTPとHTTPステータスコードのお話
- HTTPとHTTPステータスコード
- 1xx Informational 情報
- 2xx Success 成功
- 3xx Redirection リダイレクション
- 4xx Client Error クライアントエラー
- 5xx Server Error サーバエラー
HTTPとHTTPステータスコード
前回、リダイレクトとHTTPステータスコードの話を書かせて貰いましたが、改めてHTTPとHTTPステータスコードとは、という内容も残して行うと思います。
HTTP
Hypertextとは、"テキストを超えた文章"らしいです。今更なんですが、なんじゃそりゃ(^^;という感じなのでもうちょっと具体的な例を上げると、リンクや画像表示・映像などを結び付ける。ただ文章を表示するだけじゃなく別の所にある"何か"を文章内に表示(結び付ける)ことができるものはHypertextらしいです。そして"相互に結び付ける"には通信(転送)する必要があり、その通信にはお約束ごとが必要になるんですがそのお約束ごとがHTTPというルールになります。
- HTTP(Hypertext Transfer Protocol)
- ハイパテキスト転送プロトコル
- Hypertext
- 複数の文章や画像・映像などを相互に結び付けるテキストの仕組み
- Protocol
- 手順、規約、お約束ごと、ルール
HTTPステータスコード
ハイパテキスト転送のルールに沿っているか?沿っていないか?の状態をお知らせしてくれる値です。前回のリダイレクトの時にも書いたように3桁の数字でその時の状態をお知らせしてくれます。
- ステータス (status)
- 動作状態。その時の状態をお知らせしてくれる値ですね。
- コード (code)
- 符号。ルールに基づいた値です。HTTPステータスコードの場合は、3桁固定の数字。
HTTPステータスコードの分類
このステータスコードにはもちろんなんですが、ちゃんとルールがあって大分類として3桁数字の先頭数字が1〜5で分類されています。具体的にはこんな感じです。
- 1から始まるステータスコード:1xx Informational 情報
- 2から始まるステータスコード:2xx Success 成功
- 3から始まるステータスコード:3xx Redirection リダイレクション
- 4から始まるステータスコード:4xx Client Error クライアントエラー
- 5から始まるステータスコード:5xx Server Error サーバエラー
1xx
は継続して処理させる時に返すステータスコードなので自分的にはあまり見かけない印象です。それ以外はプログラムに詳しくない方でもホームページ上に表示されちゃっている(よろしくない!)のをたまに見かけることがあったりするんじゃないでしょか?
大分類の中にそれぞれ具体的なルールとそれに対応する3桁数字
が割り振られているので、抜粋になってしまうんですが、それぞれの詳細情報を下に載せて行こうと思います。
1xx Informational 情報
リクエストは受け取られた。処理は継続される。
何かしら送信して貰った時に、受けてが『処理中なのでちょっと待って!』という時や『こっちにして!』という時に返すステータスコードです。
コード | 用語 | 内容 |
---|---|---|
100 | Continue | 継続。クライアントはリクエストを継続できる。サーバがリクエストの最初の部分を受け取り、まだ拒否していないことを示す |
101 | Switching Protocols | サーバがリクエストに対してプロトコルの切替えを要求している |
102 | Processing | リクエストは受理されたが、処理は完了していない(処理中である) |
2xx Success 成功
リクエストは受け取られ、理解され、受理された。
何かしら送信して貰った時に、それが成功した『ちゃんと表示された!』『ちゃんと処理された』時に返すステータスコードです。
コード | 用語 | 内容 |
---|---|---|
200 | OK | リクエストは成功 |
201 | Created | リクエストが完了し、新たに作成されたデータのURIが返される |
202 | Accepted | リクエストは受理されたが、処理は完了していない |
3xx Redirection リダイレクション
リクエストを完了させるために、追加的な処理が必要。
自分的な解釈になってしまいますが、"あっち"から"こっち"に移動する時のステータスコードだと思ってます。
コード | 用語 | 内容 |
---|---|---|
301 | Moved Permanently | リクエストしたリソースが恒久的に移動されている時に返される |
302 | Found | リクエストしたリソースが一時的に移動されている時に返される |
307 | Temporary Redirect | リクエストしたリソースは一時的に移動されている時に返される*1 |
308 | Permanent Redirect | リクエストしたリソースは恒久的に移動されている時に返される*2 |
4xx Client Error クライアントエラー
クライアントからのリクエストに誤りがあった。
クライアントとはこっち側。即ち自分が送っている情報が間違っている場合に返ってくるステータスコードです。(ありえないURIとか指定すると403
とか404
とかブラウザ上で見れちゃうページが結構あるので、これが一番分かりやすいかも)
コード | 用語 | 内容 |
---|---|---|
400 | Bad Request | クライアントのリクエストがおかしい場合に返される |
403 | Forbidden | リソースにアクセスすることを拒否された*3 |
404 | Not Found | リソースが見つからなかった*4 |
405 | Method Not Allowed | POSTが許可されていない場所でPOSTすると返される |
5xx Server Error サーバエラー
サーバがリクエストの処理に失敗した。
サーバとありますが、アプリケーションサーバがアプリケーションの処理を解釈できずに失敗として返すと書いた方が理解しやすいですかね。どんなWebサービスでもいいんですが(ECでもブログでもSNSでも)表示させるためにhttpサーバがあり、処理する(書き込んだ物を登録して表示させたりなど)ためにappサーバがあります。5xx
は、処理が失敗した時に返ってくるステータスコードです。
コード | 用語 | 内容 |
---|---|---|
500 | Internal Server Error | サーバ内部(アプリケーション)にエラーが発生した場合に返される |
502 | Bad Gateway | ゲートウェイ・プロキシサーバが拒否した場合に返される |
503 | Service Unavailable | アクセスが殺到して処理不能に陥った場合に返される |
504 | Gateway Timeout | ゲートウェイ・プロキシサーバが相手サーバからのレスポンスがなかった場合に返される |
505 | HTTP Version Not Supported | リクエストがサポートされていないHTTPバージョンである場合に返される |
どんなものがあるか何となく感じとって貰えたでしょうか?上に書かせて貰ったのは本当に一部なので詳しくはWikiをご確認ください。
書いてみて改めて思うこと
正直、基礎の基礎なんですが改めて確認してみると分かっていない部分が結構あり自分がいかに中途半端な情報でここら辺のコードを扱って来たかが分かった気がします。実はRestAPIを自前で作成する時のレスポンスコードなどを考える時に重要になってくるので、『こんなの』とは思わず皆さんも今一度見返してみて貰えたらと思います。(おろそかにしてたの、自分だけかも (。>﹏<。) )
ということで今回はこの辺で!