API 設計でどのコードを返すか迷ったときの早見表。
2xx / 3xx
| コード | 名前 | 使いどころ |
|---|---|---|
| 200 | OK | 通常の成功。GET / PUT の応答 |
| 201 | Created | POST でリソースを作成した。Location ヘッダを付ける |
| 204 | No Content | 成功したが返す本文がない。DELETE の応答に多い |
| 301 | Moved Permanently | 恒久的な移転。SEO の評価も引き継がれる |
| 302 | Found | 一時的なリダイレクト |
| 304 | Not Modified | 条件付き GET のキャッシュ有効応答 |
4xx
| コード | 名前 | 使いどころ |
|---|---|---|
| 400 | Bad Request | リクエストの形式が不正 |
| 401 | Unauthorized | 未認証。実態は「認証が必要」 |
| 403 | Forbidden | 認証済みだが権限がない |
| 404 | Not Found | リソースが存在しない(存在を隠したい 403 の代用にも) |
| 409 | Conflict | 楽観ロック失敗や重複作成 |
| 422 | Unprocessable Content | 形式は正しいが意味的に処理できない |
| 429 | Too Many Requests | レートリミット超過。Retry-After を付ける |
5xx
サーバ側の問題。クライアントにリトライさせたい場合は 503 + Retry-After を使う。
迷ったら「クライアントの修正で直るなら 4xx、サーバ側の問題なら 5xx」で判断する。
Naxii の置き場