「404 Not Found」「500 Internal Server Error」——Web開発をしていると必ず出会う3桁の番号。これがステータスコードです。系統さえつかめば、通信が成功したのか失敗したのか、原因はどちら側かが一目で分かります。
ステータスコードはサーバーがブラウザに返す「結果の合図」です。細かい番号を覚えなくても、先頭1桁で大まかな意味が分かります。
| 系統 | 意味 |
|---|---|
| 2xx | 成功 |
| 3xx | リダイレクト(転送) |
| 4xx | クライアント側のエラー |
| 5xx | サーバー側のエラー |
200 OK … 正常に処理できた。もっとも一般的201 Created … 新しいリソースを作成した(POST成功時など)204 No Content … 成功したが返す本文はないページの移転や正規化で使います。SEOでは特に301と302の違いが重要です。
301 Moved Permanently … 恒久的な移転。評価も引き継がれる302 Found … 一時的な移転304 Not Modified … 前回から変わっていない(キャッシュ利用)リクエストの内容に問題があるケース。URLや認証、権限を疑います。
400 Bad Request … リクエストの形式が不正401 Unauthorized … 認証が必要(ログインしていない)403 Forbidden … 権限がなくアクセス拒否404 Not Found … 指定のページが存在しない429 Too Many Requests … リクエスト過多(制限)こちらはサーバー内部の不具合。アプリのバグや設定を確認します。
500 Internal Server Error … サーバー内部で予期せぬエラー502 Bad Gateway … 中継サーバーが不正な応答を受け取った503 Service Unavailable … 過負荷やメンテで一時的に利用不可APIを扱うときは、返ってきたステータスコードで処理を分岐します。JavaScriptの fetch では response.status で取得できます。
const res = await fetch("/api/user");
if (res.status === 200) {
const data = await res.json();
} else if (res.status === 404) {
console.log("ユーザーが見つかりません");
} else if (res.status >= 500) {
console.log("サーバー側でエラーが発生");
}
「4xxなら自分のリクエスト、5xxならサーバー」——この切り分けができるだけで、トラブル対応の初動がぐっと速くなります。まずは200・301・404・500の4つを押さえておけば十分です。APIを実際に叩いて、返るコードを確かめてみましょう。