422 Unprocessable Entity 処理できないエンティティを示すHTTPステータスコードの原因と解決策

スポンサーリンク
スポンサーリンク

422 Unprocessable Entityについて

422 Unprocessable Entityの概要

処理できないエンティティを示すHTTPステータスコード

422 Unprocessable Entity

概要 422 Unprocessable Entityは、リクエストが正しい形式であるものの、その内容が意味的に誤っていたり、処理要件を満たしていない場合に返されるHTTPステータスコードです。WebDAV(HTTP拡張仕様)で導入されたコードですが、近年ではREST APIでも一般的に使用されています。

影響 クライアントはリクエストの内容を修正しない限り、要求を再送しても成功しないため、ユーザー操作やクライアントアプリケーションのエラーとなる可能性があります。

422 Unprocessable Entityはどのような時に発生するか

  • リクエストボディに不正な値が含まれている場合(例: 必須フィールドの欠如、値の型が不適切)
  • データのバリデーションがサーバーで失敗した場合
  • リソースの状態や仕様に矛盾するデータを送信した場合
  • リクエスト自体は正しいが、サーバーのビジネスロジックで処理が不可能な場合

SEOに関する影響

422エラーが発生すると、特定のリソースの処理に失敗するため、ユーザーエクスペリエンスが低下します。特にフォーム送信やAPIリクエストが関与する機能でエラーが頻発する場合、サービス全体の信頼性が低下し、間接的にSEOに悪影響を与える可能性があります。

422 Unprocessable Entityの事例

以下のようなケースで422エラーが発生します。

不適切なデータ形式の送信

POST /api/user HTTP/1.1  
Host: example.com  
Content-Type: application/json  
  
{ "username": "john_doe", "age": "twenty-five" }  

ageフィールドが数値として期待されているのに文字列が送信された場合、422エラーが発生します。

必須フィールドの欠如

POST /api/register HTTP/1.1  
Host: example.com  
Content-Type: application/json  
  
{ "email": "user@example.com" }  

サーバーがpasswordフィールドを必須とする場合、このリクエストは422エラーを返します。

サーバーでの処理と解決

サーバー側では、以下の方法で422エラーを解決できる可能性があります。

  • リクエストデータのバリデーションを強化
    解決策:サーバーで受け入れるデータの形式や値を厳密に検証し、不正なリクエストを拒否する理由を明確にレスポンスに含めます。
  • エラー詳細をレスポンスに含める
    解決策:エラーレスポンスに具体的なエラー内容(例: 欠落したフィールド、型の不一致)を含め、クライアントが問題を特定しやすくします。

クライアントの対応と解決

クライアント側では、以下の対応で解決できる可能性があります。

  • API仕様に従ったリクエストの送信
    解決策:APIドキュメントを参照し、サーバーが期待する形式や値でデータを送信します。
  • 送信データの検証
    解決策:リクエストを送信する前に、必須フィールドがすべて含まれているか、値の型が正しいかをクライアント側で確認します。

関連するHTTPステータスコードとの比較

422 Unprocessable Entityと混同されやすいステータスコードについて解説します。

  • 400 Bad Request: リクエスト自体が無効な場合に返されるエラー
  • 409 Conflict: リクエストがリソースの現在の状態と矛盾する場合に返されるエラー

これらの違いを理解することで、適切なステータスコードを使用できるようになります。