🐥

学習備忘録〜「Webを支える技術」第8章〜

2024/12/23に公開

はじめに

この備忘録は、新卒2年目の初学者バックエンドエンジニアの学習記録のためにつけているものです。
解釈違いや、誤情報がある可能性があります。見つけた際にはご指摘をお願いします。
新規プロジェクトにアサインしてもらうことも増えてきて、基礎知識から定着させていきたいと思い学習備忘録第二弾が始まります。

第8章〜ステータスコード〜

ステータスコードの重要性

  • レスポンスに間違ったステータスコードを割り当てると、クライアントが混乱してシステム全体の挙動に支障をきたすので、使用で定められたステータスコードの意味を正しく理解する必要がある

ステータスコードの分類と意味

  • HTTP1.1のステータスコードはRFC2616で定義されている
  • ステータスコードは3桁の数字
  • ステータスコードを先頭の数字で分類することで、クライアントはとりあえず先頭の数字を見ればサーバがどのようなレスポンを返したのかは理解できる
  • ステータスコードの先頭を数字で分類するのは、クライアントとサーバの結びつきを疎結合にするため
    • 一般的に、シシテムが疎結合になると、コンポーネント間の独立性が高まり、こん子ポー年との置き換えや拡張が容易になると言われている

ステータスコード

  • 1XX:処理中
    • 処理が継続していることを示す
    • クライアントはそのままリクエストを継続するか、サーバの指示にした上がってプロトコルをアップデートして再送信する
  • 2xx:成功
    • リクエストが成功したことを示す
  • 3xx:リダイレクト
    • 他のリソースへのリダイレクトを示す
    • クライアントはこのステータスコードを受け取った時、レスポンスメッセージのLocationヘッダを見て新しいリソースへ接続する
  • 4xx:クライアントエラー
    • 原因はクライアントのリクエストにある
    • エラーを解消しない限り正常な結果が得られないので、同じリクエストをそのまま再送信することはできない
  • 5xx:サーバエラー
    • 原因はサーバ側
    • サーバ側の下忍が解決すれば、同一のリクエストを再送信して正常な結果が得られる可能性がある

よく使われるステータスコード

200 OK

  • リクエスト成功

201 Created

  • リソースの新規作成に成功

301 Moved Permanently

  • リクエストで指定したリソースが新しいUROに移動したことを示す

303 See Other

  • リクエストに対する処理結果が別のURIで取得できることを示す

400 Bad Request

  • リクエストの構文やパラメータが間違っていることを示す
  • 他にも、適切なクライアントエラーを示すステータスコードがない場合にも用いる
  • クライアントにとって未知のステータスコードが返ってきた場合も400で処理するように仕様で定められている

401 Unauthorized

  • 適切な認証情報を与えずにリクエストを行ったことを示す

404 Not Found

  • 指定したリソースが見つからないことを示す

500 Internal Server Error

  • サーバ側になんらかの問題が生じて、正しいレスポンスが返せないことを示す
  • 他に適切なサーバエラーを示すステータスkーどがない場合にも用いる
  • クライアントにとって未知のステータスコードが返ってきた場合も500で処理するように仕様で定められている

503 Service Unavailable

  • メンテナンス等でサーバが一時的にアクセスできないことを示す

ステータスコードとエラー処理

  • ステータスコードはHTTP仕様が規定しているが、ボディにどんなエラーメッセージを入れるかは規定されていないため、自分らで指定する必要がある

Discussion