2020/08/02

私的HTTPステータスコード選択ルール

初めに

APIサーバーを作る際にどのHTTPステータスコードを返せばよいか毎回悩むため忘れないようにメモ

※個人的なメモなので信頼性は無いです


成功 (2xx系)

処理が正常に完了した場合。
200 OK のみでも問題ないと思う

200 OK

他の2xx系の条件に当てはまらない場合に使用

201 Created

ファイルのアップロード、データベースへのデータ登録等の作成処理が成功した際に使用
POSTメソッドで使用

202 Accepted

処理を受け付けたがバックグラウンドで処理が続行中など、まだ処理が完了していない場合に使用
バッチ処理などで使用


失敗 (クライアント側に問題あり 4xx系)

クライアント側の問題で処理に失敗した際に使用

400 Bad Request

他の4xx系の条件に当てはまらない場合に使用

401 Unauthorized

認証エラーの際に使用
ログインに失敗した、認証のない人がアクセスしてきた、許可していないIPアドレスからのアクセス等

403 Forbidden

認証を受けている人が認証外のデータにアクセスしようとした時に使用

404 Not Found

存在しないデータにアクセスしようとした時に使用

413 Request Entity Too Large

サーバーへ送ろうとしているデータサイズが大きすぎて処理できない際に使用

429 Too Many Requests

単位時間あたりのアクセス数が上限を超えたときに使用
※リトライで復旧する場合に使用


失敗 (サーバー側に問題あり 5xx系)

サーバー側の問題で処理に失敗した際に使用

500 Internal Server Error

他の5xx系の条件に当てはまらない場合に使用

503 Service Unavailable

外部サーバーやデータベースにアクセスしようとした際に外部サーバが過負荷で通信できなかったときに使用
※リトライすることで復旧する場合に使用



参考文献

先輩と覚える HTTP ステータスコード

HTTP レスポンスステータスコード