Webサイトを閲覧したり、Web APIを使用したりしていると、200や404、500などの数字を目にすることがあります。
これらの数字は「HTTPステータスコード」と呼ばれ、クライアントから送信したHTTPリクエストに対して、サーバーがどのような処理結果になったのかを伝えるために使用されます。
例えば、Webページが正常に表示された場合は200 OK、指定したページが見つからない場合は404 Not Foundが返されます。
しかし、HTTPステータスコードには多くの種類があるため、
200や404などの数字にはどのような意味があるの?4xxと5xxは何が違うの?401 Unauthorizedと403 Forbiddenは何が違うの?301と302は何が違うの?
と疑問に思うこともあるでしょう。
この記事では、HTTPステータスコードとは何か、1xx〜5xxの違いから、よく使用されるHTTPステータスコードの意味、HTTPステータスコードの一覧まで、わかりやすく解説します。
HTTPステータスコードとは?

HTTPステータスコードとは、クライアントから送信されたHTTPリクエストに対して、処理結果や状態を示すHTTPレスポンスに含まれる3桁の数字です。
例えば、ブラウザからWebサーバーへページを取得するHTTPリクエストを送信したとします。
ブラウザ
↓
HTTPリクエスト
↓
Webサーバー
↓
HTTPレスポンス
↓
ブラウザWebサーバーはHTTPレスポンスを返すときに、リクエストが成功したのか、要求されたページが見つからなかったのか、サーバーでエラーが発生したのかなどをHTTPステータスコードで通知します。
例えば、リクエストが正常に処理された場合は次のようなHTTPレスポンスが返されます。
HTTP/1.1 200 OK
Content-Type: text/htmlこの中の200がHTTPステータスコードで、OKはそのステータスコードに対応する説明です。
つまり、HTTPステータスコードを見ることで、クライアントはHTTPリクエストがどのような結果になったのかを判断できます。
あわせて読みたい
Content-Type: text/htmlのContent-Typeは「HTTPヘッダー」と呼ばれるものです。Content-Typeヘッダーでは、HTTPメッセージのボディに含まれるデータの種類を指定します。
例えば、text/htmlはHTML、application/jsonはJSON形式のデータであることを示します。
「HTTPヘッダーの種類」については、以下の記事で詳しく説明しています。興味のある方は下記のリンクからぜひチェックをしてみてください。 続きを見る
HTTPヘッダーの一覧!どんな種類があるの?
HTTPステータスコードは1xx〜5xxの5種類に分類される
HTTPステータスコードは3桁の数字で表され、先頭の数字によって次の5種類に分類されます。
| 分類 | 意味 | 簡単な説明 |
| 1xx | Informational | リクエストを受信し、処理を継続している |
| 2xx | Successful | リクエストが正常に処理された |
| 3xx | Redirection | リクエストを完了するために追加の処理が必要 |
| 4xx | Client Error | クライアント側のリクエストなどに問題がある |
| 5xx | Server Error | サーバー側でリクエストを処理できなかった |
初心者の場合は、まず「2xxは成功」「4xxは主にクライアント側に関係するエラー」「5xxはサーバー側のエラー」と覚えると理解しやすいでしょう。
後ほど各HTTPステータスコードについて詳しく説明します。
よく使用されるHTTPステータスコード
HTTPステータスコードをすべて暗記する必要はありません。
Web開発やWeb APIの開発では、まず次のような代表的なコードを覚えておくとよいでしょう。
| コード | 名前 | 覚え方 |
| 200 | OK | 成功 |
| 201 | Created | 作成成功 |
| 204 | No Content | 成功したが返す内容なし |
| 301 | Moved Permanently | 恒久的な移動 |
| 302 | Found | 一時的な移動 |
| 304 | Not Modified | 更新されていない |
| 400 | Bad Request | リクエストがおかしい |
| 401 | Unauthorized | 認証が必要 |
| 403 | Forbidden | アクセス拒否 |
| 404 | Not Found | 見つからない |
| 405 | Method Not Allowed | メソッドが許可されていない |
| 409 | Conflict | 競合 |
| 422 | Unprocessable Content | 内容を処理できない |
| 429 | Too Many Requests | リクエストが多すぎる |
| 500 | Internal Server Error | サーバー内部エラー |
| 502 | Bad Gateway | 上流サーバーの応答に問題 |
| 503 | Service Unavailable | 一時的に利用不可 |
| 504 | Gateway Timeout | 上流サーバーがタイムアウト |
最初からすべてのコードを覚えるのではなく、まずは200、400、401、403、404、500などのよく使用するコードを理解し、必要になったときにほかのコードを確認する方法がおすすめです。
1xx:情報レスポンス
1xxは、リクエストを受信し、処理を継続していることなどを示すHTTPステータスコードです。
通常のWebサイト閲覧で意識する機会は多くありません。
| コード | 名前 | 説明 | よく使うか |
100 | Continue | クライアントがリクエストの送信を継続できることを示す | △ |
101 | Switching Protocols | 別のプロトコルへ切り替えることを示す | △ |
102 | Processing | リクエストを処理中であることを示す | × |
103 | Early Hints | 最終レスポンスの前に関連情報を通知する | × |
104 | Upload Resumption Supported | 再開可能なアップロードへの対応を示す | × |
※「よく使うか」は、一般的なWeb開発で目にする頻度の目安です。
それでは、各HTTPステータスコードについて詳しく説明します。
100 Continue
100 Continueは、ここまで受信したリクエストに問題がなく、クライアントがリクエストを続けてもよいことを示します。
例えば、大きなデータを送信する前に、サーバーがリクエストを受け付けられるか確認する場合などに使用できます。
101 Switching Protocols
101 Switching Protocolsは、クライアントから要求されたプロトコルへの切り替えをサーバーが受け入れたことを示します。
102 Processing
102 Processingは、サーバーがリクエストを受信し、処理中であることを示すためにWebDAVで定義されていたステータスコードです。
現在のWebDAV仕様では削除されているため、新しいシステムで積極的に使用するコードではありません。
103 Early Hints
103 Early Hintsは、最終的なHTTPレスポンスを返す前に、読み込みが必要になる可能性のあるリソースなどの情報をクライアントへ早めに通知するためのステータスコードです。
104 Upload Resumption Supported
104 Upload Resumption Supportedは、再開可能なアップロードに対応していることを示すためのステータスコードです。
IANAでは一時的に登録されているステータスコードであり、一般的なWebアプリケーションで頻繁に使用するコードではありません。
2xx:成功レスポンス
2xxは、クライアントからのリクエストが正常に受信・理解・処理されたことを示します。
WebサイトやWeb APIの開発では、特に200、201、204などを目にする機会があります。
| コード | 名前 | 説明 | よく使うか |
200 | OK | リクエストが正常に処理された | ○ |
201 | Created | 新しいリソースが作成された | ○ |
202 | Accepted | リクエストは受理されたが処理は完了していない | △ |
203 | Non-Authoritative Information | オリジンサーバーからのレスポンスがプロキシによって変更されて返された | × |
204 | No Content | 正常に処理されたが返すコンテンツがない | ○ |
205 | Reset Content | クライアントに表示内容などのリセットを求める | × |
206 | Partial Content | リソースの一部分を返した | △ |
207 | Multi-Status | 複数のリソースについて複数の結果を返す | × |
208 | Already Reported | すでに報告済みのリソースであることを示す | × |
226 | IM Used | Instance Manipulationを適用した結果を返す | × |
※「よく使うか」は、一般的なWeb開発で目にする頻度の目安です。
それでは、各HTTPステータスコードについて詳しく説明します。
200 OK
200 OKは、リクエストが正常に処理されたことを示す代表的なHTTPステータスコードです。
例えば、GETメソッドでユーザー情報を取得し、正常に取得できた場合などに200 OKが返されます。
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 1,
"name": "Taro"
}ただし、200 OKが具体的に何を意味するのかはHTTPメソッドによって異なります。
201 Created
201 Createdは、リクエストが成功し、新しいリソースが作成されたことを示します。
例えば、Web APIへPOSTリクエストを送信して新しいユーザーを作成した場合などに使用されます。
POST /users
↓
ユーザーを新規作成
↓
201 Created202 Accepted
202 Acceptedは、リクエストは受理されたものの、処理がまだ完了していないことを示します。
時間のかかる非同期処理やバッチ処理などで使用されることがあります。
203 Non-Authoritative Information
203 Non-Authoritative Informationは、リクエストは成功したものの、オリジンサーバーの200 OKレスポンスの内容が、途中のプロキシによって変更されていることを示します。
204 No Content
204 No Contentは、リクエストは正常に処理されたものの、レスポンスボディとして返すコンテンツがないことを示します。
例えば、データの削除に成功したものの、クライアントへ返すデータがない場合などに使用できます。
205 Reset Content
205 Reset Contentは、リクエストの処理が完了し、クライアントにリクエスト送信元の表示や入力内容などをリセットするよう求めるステータスコードです。
206 Partial Content
206 Partial Contentは、クライアントから要求されたリソースの一部分を返したことを示します。
動画や大きなファイルなどを部分的に取得するRangeリクエストなどで使用されます。
207 Multi-Status
207 Multi-Statusは、複数のリソースについて複数のステータスをまとめて返すためにWebDAVで使用されるステータスコードです。
208 Already Reported
208 Already Reportedは、WebDAVにおいて、すでに報告したリソースを重複して列挙することを避けるために使用されます。
226 IM Used
226 IM Usedは、サーバーがリソースに対して1つ以上のInstance Manipulationを適用した結果を返していることを示します。
一般的なWeb開発で目にする機会はほとんどありません。
3xx:リダイレクト
3xxは、リクエストを完了するために、クライアント側で追加の処理が必要であることを示します。
Webサイトでは、URLを別のURLへ移動させる「リダイレクト」で301や302を目にすることが多いでしょう。
| コード | 名前 | 説明 | よく使うか |
300 | Multiple Choices | 複数の選択肢が存在する | × |
301 | Moved Permanently | 恒久的に別のURLへ移動した | ○ |
302 | Found | 一時的に別のURLへ移動している | ○ |
303 | See Other | 別のURLをGETで取得するよう案内する | △ |
304 | Not Modified | リソースが変更されていない | ○ |
305 | Use Proxy | 指定されたプロキシの使用を求める | × |
306 | Unused | 現在は使用されていない | × |
307 | Temporary Redirect | HTTPメソッドを維持して一時的にリダイレクトする | △ |
308 | Permanent Redirect | HTTPメソッドを維持して恒久的にリダイレクトする | △ |
※「よく使うか」は、一般的なWeb開発で目にする頻度の目安です。
それでは、各HTTPステータスコードについて詳しく説明します。
300 Multiple Choices
300 Multiple Choicesは、リクエストに対して複数の選択肢が存在することを示します。
301 Moved Permanently
301 Moved Permanentlyは、リクエストされたリソースが恒久的に別のURLへ移動したことを示します。
例えば、WebページのURLを完全に変更した場合などに使用されます。
https://example.com/old-page
↓
301 Moved Permanently
↓
https://example.com/new-page検索エンジンなどに「今後はこちらのURLを使用する」ということを伝えたい場合にも使用されます。
302 Found
302 Foundは、リクエストされたリソースが一時的に別のURLにあることを示します。
301が恒久的な移動であるのに対し、302は一時的な移動であることが大きな違いです。
303 See Other
303 See Otherは、別のURLをGETメソッドで取得するようクライアントへ案内するステータスコードです。
例えば、POSTによる処理が完了したあと、結果ページへ移動させる場合などに使用できます。
304 Not Modified
304 Not Modifiedは、条件付きGETまたはHEADリクエストに対して、クライアントが保持しているリソースをそのまま利用できることを示します。
そのため、サーバーは同じコンテンツを再送信する必要がなく、クライアントは保存済みのリソースを利用できます。
305 Use Proxy
305 Use Proxyは、指定されたプロキシを使用してリソースへアクセスすることを示すために定義されていましたが、現在は非推奨のステータスコードです。
306
306は現在使用されていません。
307 Temporary Redirect
307 Temporary Redirectは、一時的に別のURLへリダイレクトすることを示します。
302 Foundと似ていますが、307ではリダイレクト前のHTTPメソッドを変更せずにリダイレクト先へリクエストすることが求められます。
例えば、POSTリクエストに対して307が返された場合、リダイレクト先にもPOSTでリクエストします。
308 Permanent Redirect
308 Permanent Redirectは、リソースが恒久的に別のURLへ移動したことを示します。
301 Moved Permanentlyと似ていますが、308ではリダイレクト前のHTTPメソッドを変更せずにリダイレクトすることが求められます。
301・302・307・308の違い
リダイレクトで使用される代表的なHTTPステータスコードを整理すると、次のようになります。
| コード | 移動 | HTTPメソッド |
| 301 Moved Permanently | 恒久的 | 一部のユーザーエージェントでは変更されることがある |
| 302 Found | 一時的 | 一部のユーザーエージェントでは変更されることがある |
| 307 Temporary Redirect | 一時的 | 維持する |
| 308 Permanent Redirect | 恒久的 | 維持する |
特にWeb APIなどでHTTPメソッドを確実に維持したい場合は、307や308との違いを理解しておくことが重要です。
4xx:クライアントエラー
4xxは、クライアントから送信されたリクエストに問題がある場合や、リクエストされた処理を実行できない場合などに返されます。
代表的なものに400、401、403、404、405、429などがあります。
| コード | 名前 | 説明 | よく使うか |
400 | Bad Request | リクエストに問題がある | ○ |
401 | Unauthorized | 有効な認証情報が必要 | ○ |
402 | Payment Required | 支払いに関連する用途として予約されている | × |
403 | Forbidden | アクセスが拒否された | ○ |
404 | Not Found | リソースが見つからない | ○ |
405 | Method Not Allowed | HTTPメソッドが許可されていない | ○ |
406 | Not Acceptable | 要求条件を満たすレスポンスを提供できない | △ |
407 | Proxy Authentication Required | プロキシ認証が必要 | × |
408 | Request Timeout | リクエストの受信がタイムアウトした | △ |
409 | Conflict | リソースの現在の状態と競合した | ○ |
410 | Gone | リソースが恒久的に利用できない | △ |
411 | Length Required | Content-Lengthが必要 | × |
412 | Precondition Failed | 前提条件を満たしていない | △ |
413 | Content Too Large | リクエスト内容が大きすぎる | △ |
414 | URI Too Long | URIが長すぎる | × |
415 | Unsupported Media Type | メディアタイプに対応していない | ○ |
416 | Range Not Satisfiable | 要求された範囲を提供できない | × |
417 | Expectation Failed | Expectヘッダーの要求を満たせない | × |
418 | Unused | 現在のHTTP仕様では未使用 | × |
421 | Misdirected Request | 適切ではないサーバーへリクエストされた | × |
422 | Unprocessable Content | 内容を理解できるが処理できない | ○ |
423 | Locked | リソースがロックされている | × |
424 | Failed Dependency | 依存する処理が失敗した | × |
425 | Too Early | リクエストを処理するには早すぎる | × |
426 | Upgrade Required | プロトコルのアップグレードが必要 | × |
428 | Precondition Required | 条件付きリクエストが必要 | × |
429 | Too Many Requests | リクエスト回数が多すぎる | ○ |
431 | Request Header Fields Too Large | リクエストヘッダーが大きすぎる | △ |
451 | Unavailable For Legal Reasons | 法的理由によって利用できない | × |
※「よく使うか」は、一般的なWeb開発で目にする頻度の目安です。
それでは、各HTTPステータスコードについて詳しく説明します。
400 Bad Request
400 Bad Requestは、リクエストの構文などに問題があり、サーバーがリクエストを処理できないことを示します。
例えば、不正な形式のデータを送信した場合などに返されることがあります。
401 Unauthorized
401 Unauthorizedは、リクエストされたリソースへアクセスするための有効な認証情報がないことを示します。
名前にUnauthorizedとありますが、主に「認証が必要」「認証に失敗した」と考えると理解しやすいでしょう。
403 Forbidden
403 Forbiddenは、サーバーがリクエストを理解しているものの、アクセスを拒否していることを示します。
401と403の違い
401 Unauthorizedと403 Forbiddenは混同しやすいHTTPステータスコードです。
簡単に整理すると、次のように考えられます。
| コード | 主な意味 |
| 401 Unauthorized | 有効な認証情報がなく、認証が必要 |
| 403 Forbidden | リクエストを理解しているが、アクセスを拒否している |
ただし、セキュリティ上の理由から、実際のWebサービスではリソースの存在を隠すために別のステータスコードを返す場合もあります。
402 Payment Required
402 Payment Requiredは、将来的なデジタル決済などでの利用を想定して予約されているステータスコードです。
404 Not Found
404 Not Foundは、サーバーが要求されたリソースを見つけられないことを示します。
例えば、存在しないURLへアクセスした場合などに表示されます。
GET /users/999
↓
該当するリソースが見つからない
↓
404 Not Found405 Method Not Allowed
405 Method Not Allowedは、HTTPメソッド自体はサーバーが理解しているものの、そのリソースでは使用できないことを示します。
例えば、GETには対応しているURLへDELETEリクエストを送信した場合などです。
406 Not Acceptable
406 Not Acceptableは、クライアントが要求した条件を満たすレスポンスをサーバーが提供できないことを示します。
407 Proxy Authentication Required
407 Proxy Authentication Requiredは、プロキシサーバーでの認証が必要であることを示します。
408 Request Timeout
408 Request Timeoutは、サーバーが待機している時間内にクライアントからリクエストを受信できなかったことを示します。
409 Conflict
409 Conflictは、リクエストがサーバー上のリソースの現在の状態と競合していることを示します。
例えば、同じリソースを複数の処理から更新しようとして競合が発生した場合などに使用できます。
410 Gone
410 Goneは、要求されたリソースが以前は存在していたものの、現在は恒久的に削除されていることを示します。
404 Not Foundではリソースが存在しないことを示しますが、410 Goneはリソースが意図的・恒久的に利用できなくなったことを示せる点が異なります。
411 Length Required
411 Length Requiredは、サーバーがContent-Lengthを必要としているものの、リクエストに指定されていないことを示します。
412 Precondition Failed
412 Precondition Failedは、リクエストに指定された前提条件を満たしていないことを示します。
413 Content Too Large
413 Content Too Largeは、リクエストの内容がサーバーの許容するサイズより大きいことを示します。
例えば、アップロードできる上限を超えた大きなファイルを送信した場合などに返されることがあります。
414 URI Too Long
414 URI Too Longは、リクエストされたURIがサーバーの処理できる長さを超えていることを示します。
415 Unsupported Media Type
415 Unsupported Media Typeは、リクエストで送信されたデータのメディアタイプをサーバーが対応していないことを示します。
例えば、APIがJSON形式を要求しているにもかかわらず、対応していない形式でデータを送信した場合などです。
416 Range Not Satisfiable
416 Range Not Satisfiableは、クライアントがRangeヘッダーなどで要求した範囲をサーバーが提供できないことを示します。
417 Expectation Failed
417 Expectation Failedは、リクエストのExpectヘッダーに指定された要求をサーバーが満たせないことを示します。
418
418は現在のHTTP仕様ではUnused(未使用)として扱われています。
418 I'm a teapotとして知られていますが、現在のHTTP Semanticsでは418は未使用として扱われています。
421 Misdirected Request
421 Misdirected Requestは、そのリクエストに対するレスポンスを生成できないサーバーへリクエストが送信されたことを示します。
422 Unprocessable Content
422 Unprocessable Contentは、リクエストの内容や形式自体は理解できるものの、含まれている指示や内容の問題によって処理できないことを示します。
Web APIでは、入力値の検証エラーなどで使用されることがあります。
423 Locked
423 Lockedは、対象のリソースがロックされていることを示します。主にWebDAVで使用されます。
424 Failed Dependency
424 Failed Dependencyは、依存している別の処理が失敗したため、リクエストされた処理も実行できなかったことを示します。主にWebDAVで使用されます。
425 Too Early
425 Too Earlyは、リクエストが早期データとして送信され、再送攻撃の可能性があるため、サーバーが処理することを望まない場合などに使用されます。
426 Upgrade Required
426 Upgrade Requiredは、現在使用しているプロトコルではリクエストを処理できず、別のプロトコルへのアップグレードが必要であることを示します。
428 Precondition Required
428 Precondition Requiredは、サーバーがリクエストを条件付きリクエストとして送信することを要求していることを示します。
更新処理の競合などを防ぐ目的で利用できます。
429 Too Many Requests
429 Too Many Requestsは、一定時間内にクライアントから送信されたリクエストが多すぎることを示します。
APIのレート制限を超えた場合などに使用されます。
短時間に大量のリクエスト
↓
APIサーバー
↓
429 Too Many Requests431 Request Header Fields Too Large
431 Request Header Fields Too Largeは、HTTPリクエストヘッダー全体または特定のヘッダーが大きすぎるため、サーバーがリクエストを処理しないことを示します。
451 Unavailable For Legal Reasons
451 Unavailable For Legal Reasonsは、法的な理由によってリソースを提供できないことを示します。
5xx:サーバーエラー
5xxは、クライアントからのリクエストをサーバーが正常に処理できなかったことを示します。
代表的なものに500、502、503、504などがあります。
| コード | 名前 | 説明 | よく使うか |
500 | Internal Server Error | サーバー内部でエラーが発生した | ○ |
501 | Not Implemented | サーバーが要求された機能に対応していない | △ |
502 | Bad Gateway | 上流サーバーから無効なレスポンスを受信した | ○ |
503 | Service Unavailable | サーバーが一時的に利用できない | ○ |
504 | Gateway Timeout | 上流サーバーからの応答がタイムアウトした | ○ |
505 | HTTP Version Not Supported | HTTPバージョンに対応していない | × |
506 | Variant Also Negotiates | コンテンツネゴシエーションの設定に問題がある | × |
507 | Insufficient Storage | 処理に必要な保存領域が不足している | × |
508 | Loop Detected | 処理中にループを検出した | × |
510 | Not Extended | 現在は廃止されている | × |
511 | Network Authentication Required | ネットワーク認証が必要 | × |
※「よく使うか」は、一般的なWeb開発で目にする頻度の目安です。
それでは、各HTTPステータスコードについて詳しく説明します。
500 Internal Server Error
500 Internal Server Errorは、サーバー内部でエラーが発生し、リクエストを正常に処理できなかったことを示します。
特定の5xxステータスコードでは表せない、一般的なサーバーエラーとして使用されます。
Webアプリケーションのプログラムで予期しない例外が発生した場合などに返されることがあります。
501 Not Implemented
501 Not Implementedは、サーバーがリクエストされた機能やHTTPメソッドに対応しておらず、処理できないことを示します。
502 Bad Gateway
502 Bad Gatewayは、ゲートウェイやプロキシとして動作しているサーバーが、上流のサーバーから無効なレスポンスを受け取ったことを示します。
クライアント
↓
ゲートウェイ・プロキシ
↓
上流サーバー
↑
正常なレスポンスを取得できない
↓
502 Bad Gateway503 Service Unavailable
503 Service Unavailableは、サーバーが一時的にリクエストを処理できない状態であることを示します。
例えば、サーバーがメンテナンス中の場合や、一時的にアクセスが集中している場合などに返されます。
一時的な状態である場合、サーバーはRetry-Afterヘッダーを使用して、いつ頃再試行できるのかを通知することもできます。
504 Gateway Timeout
504 Gateway Timeoutは、ゲートウェイやプロキシとして動作するサーバーが、上流のサーバーから時間内にレスポンスを受け取れなかったことを示します。
502 Bad Gatewayと似ていますが、502は上流サーバーから無効なレスポンスを受け取った場合、504は必要なレスポンスを時間内に受け取れなかった場合に使用されます。
505 HTTP Version Not Supported
505 HTTP Version Not Supportedは、リクエストで使用されているHTTPバージョンをサーバーが対応していないことを示します。
506 Variant Also Negotiates
506 Variant Also Negotiatesは、コンテンツネゴシエーションの設定に問題があることを示すステータスコードです。
一般的なWeb開発で目にする機会はほとんどありません。
507 Insufficient Storage
507 Insufficient Storageは、リクエストを処理するために必要なデータを保存する十分な領域がサーバーにないことを示します。WebDAVで定義されています。
508 Loop Detected
508 Loop Detectedは、リクエストの処理中に無限ループが検出されたことを示します。WebDAVで使用されます。
510 Not Extended
510 Not Extendedは、リクエストを処理するために追加の拡張が必要であることを示すために定義されていましたが、現在は廃止されたステータスコードです。
511 Network Authentication Required
511 Network Authentication Requiredは、ネットワークへアクセスするために認証が必要であることを示します。
例えば、公衆Wi-Fiなどでログインページによる認証が必要な場合に使用されることがあります。
JavaScriptのfetchでHTTPステータスコードを確認する
JavaScriptのfetch()では、取得したResponseオブジェクトのstatusプロパティからHTTPステータスコードを取得できます。
例えば、次のコードを実行します。
const response = await fetch('/api/users/1');
console.log(response.status);サーバーから200 OKが返された場合、response.statusは200になります。
なお、fetch()は404 Not Foundや500 Internal Server ErrorなどのHTTPエラーステータスが返されても、それだけを理由にPromiseがrejectされるわけではありません。そのため、HTTPリクエストが成功したかどうかは、response.okやresponse.statusを確認して判定する必要があります。
また、response.okを使用すると、レスポンスが成功したかどうかを確認できます。
const response = await fetch('/api/users/1');
if (!response.ok) {
throw new Error(`HTTPエラー: ${response.status}`);
}
const data = await response.json();
console.log(data);response.okはHTTPステータスコードが200〜299の場合にtrueになります。
このように、Web APIを利用するプログラムではHTTPステータスコードを確認し、成功時とエラー時で処理を分けることができます。
本記事のまとめ
この記事では「HTTPステータスコード」について、以下の内容を説明しました。
- HTTPステータスコードは、HTTPリクエストに対する処理結果を表す3桁の数字
1xxは情報、2xxは成功、3xxはリダイレクト、4xxはクライアントエラー、5xxはサーバーエラーを表す200 OK、404 Not Found、500 Internal Server Errorなど、それぞれのコードに意味がある- HTTPステータスコードには一般的なWeb開発ではほとんど使用しないコードや、未使用・廃止されたコードも存在する
- JavaScriptの
fetch()ではresponse.statusからHTTPステータスコードを取得できる
HTTPステータスコードはWebサイトやWeb APIの仕組みを理解するうえで重要な知識です。すべてを暗記する必要はありませんが、まずは200、400、401、403、404、500などの代表的なコードから覚えておくとよいでしょう。
お読みいただきありがとうございました。