こんにちは。たいら(@tairaengineer2)です。
転職を繰り返し現在5社経験している、15年目エンジニアです。
この記事では、よく使うステータスコードの違いをまとめてみました!
ご参考になれば幸いです。
400 Bad Request と 422 Unprocessable Entity の違い
まぎらわしいのがこの2つかなと思います。
400は、リクエスト自体が不正なときです。
422は、内容が業務的に不正なときです。
具体例はこんな感じです。
- URLのパスが「/index」が正しいのに「/inde」 → 400
- 指定するパラメータidはint型しか許容してないのにstring型だった → 422
1点注意事項です。
バリデーションエラーは、400と422どちらを返すのかはプロジェクトで異なります。
バリデーションエラーは何を返すのが適切なのかは、プロジェクトのルールを確認してみてください。
401 Unauthorized と 403 Forbidden の違い
ここも混乱しやすいポイントかなと思います。
401は、ログイン情報がないときです。
403は、認証はしてるけど権限がないときです。
具体例はこんな感じです。
- 認証トークンがない → 401
- 認証トークンはあるけど権限が一般ユーザー → 403
500 Internal Server Error を使うとき
500 は「サーバー側の予期しないエラー」です。
つまり、アプリが想定していない予期しない問題が起きたときに使います。
なので
- プログラム不具合が原因のエラー
- CPUやメモリのリソース不足
- アクセスするディレクトリの権限エラー
こういうケースで500を使うのが良いと思います!
まとめ:HTTPステータスコードはエラーで使い分けよう!
以上がHTTPステータスコードの使い分けの解説でした!
HTTPステータスコードは
- 誰の問題か(クライアント or サーバー)
- どんな種類の問題か(形式・認証・権限・予期せぬエラー)
で選ぶのがポイントです。
あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ
コメント