422 Unprocessable Entityレスポンスのモック

詳細なバリデーションエラーを含む422 Unprocessable Entityエラーレスポンスを生成。Laravel、Railsなどのフレームワークで一般的。

Testing Patterns

詳細な説明

422 Unprocessable Entity

422ステータスコードは、サーバーがリクエストのコンテンツタイプと構文を理解しているが、データが意味的に無効であることを示します。LaravelやRuby on Railsなどのフレームワークでバリデーションエラーに一般的に使用されます。

レスポンス構造

{
  "message": "The given data was invalid.",
  "errors": {
    "email": [
      "The email field is required.",
      "The email must be a valid email address."
    ],
    "password": [
      "The password must be at least 8 characters.",
      "The password must contain at least one uppercase letter."
    ],
    "age": [
      "The age must be a number.",
      "The age must be between 18 and 120."
    ]
  }
}

400 vs 422

側面 400 Bad Request 422 Unprocessable Entity
構文 不正なJSON、間違ったContent-Type 有効なJSON、正しい構文
意味論 N/A(解析不可) フィールドは存在するが値が無効
一般的なフレームワーク Express、Fastify Laravel、Rails、Phoenix
RFC HTTP/1.1 WebDAV (RFC 4918)

フィールドグループ化エラー

このパターンはフィールド名ごとにエラーをグループ化し、各フィールドにエラーメッセージの配列を持ちます。これは特に以下に役立ちます:

  • フィールドごとに複数のエラーを表示
  • プログラム的にすべての無効なフィールドをハイライト
  • 国際化されたエラーメッセージのサポート

フロントエンド統合

ほとんどのフォームライブラリ(React Hook Form、Formik、VeeValidate)はフィールドレベルエラーの設定をビルトインサポートしています。レスポンスのerrorsオブジェクトをフォーム状態に直接マッピングします:

Object.entries(response.errors).forEach(([field, messages]) => {
  setError(field, { message: messages[0] });
});

ユースケース

Laravel、Rails、または同様のフレームワークで作業する開発者が、フロントエンドの422バリデーションエラー処理をテストし、適切なフィールドレベルのエラー表示とフォーム状態管理を確認するために使用できます。

試してみる — API Response Mocker

フルツールを開く