用語集 · API テスト
HTTP ステータスコード
英語: HTTP status code
別名: ステータスコード, レスポンスコード, HTTPステータス, HTTP status codes
定義
すべての HTTP レスポンスに含まれる 3 桁の数字で、リクエストが成功したか、リダイレクトされたか、クライアントまたはサーバーの原因で失敗したかを示します。
HTTP ステータスコードは、リクエストに対するサーバーの短い回答です。最初の桁がクラスを表します。1xx は情報、2xx は成功、3xx はリダイレクト、4xx はクライアントエラー(リクエストが誤っている)、5xx はサーバーエラー(リクエストは正しかったかもしれないが、サーバーが失敗した)です。正確なステータスコードをアサートすることは、通常どの API テストでも最初のチェックになります。
テスターがよく使うコード
| コード | 意味 | 主な用途 |
|---|---|---|
200 OK |
ボディ付きの成功 | GET、またはリソースを返す更新 |
201 Created |
リソースが作成された | POST。Location ヘッダーを伴う |
204 No Content |
成功、ボディなし | DELETE、一部の PUT |
301 / 302 / 304 |
移動した、別の場所で見つかった、変更なし | リダイレクトとキャッシュ |
400 Bad Request |
形式が不正、または無効なリクエスト | 壊れた JSON、誤った型 |
401 Unauthorized |
認証されていない | トークンがない、期限切れ、または無効 |
403 Forbidden |
認証済みだが許可されていない | 有効なユーザーだがロールが違う |
404 Not Found |
そのようなリソースはない | 未知の id、または禁止されたリソースを隠す場合 |
409 Conflict |
現在の状態と衝突する | メールアドレスの重複、バージョンの競合 |
422 Unprocessable Content |
形式は正しいがバリデーションに失敗 | ビジネスルール違反 |
429 Too Many Requests |
レート制限を超えた | Retry-After を伴うことが多い |
500 / 502 / 503 / 504 |
サーバーエラー、不正なゲートウェイ、利用不可、ゲートウェイタイムアウト | バグとインフラの問題 |
401 と 403 の違い
名前に反して、401 Unauthorized は認証に関するものです。サーバーはあなたが誰か分かっていません。解決策はログインするか有効なトークンを送ることで、レスポンスには WWW-Authenticate ヘッダーを含めるべきです。403 Forbidden は認可に関するものです。サーバーはあなたが誰か分かったうえで、その操作を許可していません。再ログインしても解決しません。テストスイートでは、トークンなし、期限切れのトークン、適切な権限を持たないユーザーの有効なトークン、のすべてをカバーすべきです。
よくある間違い
- 200 だけを確認する。 欠陥の大半はエラーパスに潜んでいます。不正な入力には
4xxが返るべきで、500は入力が処理されていないことを意味し、バグとして報告する価値があります。 - 200 ステータスでエラーを返す。
200のボディにエラーメッセージを入れると、クライアントや監視が正しく動かなくなります。 - 規約の不統一。 すべての不正な入力に
400を使う API もあれば、バリデーションの失敗に422を使う API もあります。どちらでもかまいませんが、1 つの API の中で混在させるのはバグです。