サーバー応答 422 Unprocessable Entity
HTTP ステータスコード 422 の定義と適用
HTTP ステータスコード 422 (Unprocessable Entity) は、サーバーがリクエストの内容を理解したが、意味的なエラーのために処理できないことを示すコードです。このステータスコードの重要性は、クライアントが送信したデータに問題があることを明確に伝えることにあります。
ステータスコード 422 の意味
- リクエストの理解: サーバーはリクエストを正しく解釈します。
- 処理の失敗: サーバーはリクエストを処理できません。
エラーが発生する状況
- 不正なデータフォーマット
- 必須フィールドの欠如
- フィールド内のサポートされていない値
ステータスコード 422 の実際の使用例
例 1: フォームバリデーションエラー
クライアントがフォームデータを送信する際、入力内容に誤りがある場合、サーバーは次のように応答します。
- クライアントが不正なデータをフォームに入力して送信
- サーバーが 422 コードを返し、エラーの詳細を説明
例 2: API データ処理
サーバーが受信したデータを処理できない場合の典型的なシナリオです。
- サーバーが無効な入力データを受け取る
- エラーの詳細を含む 422 ステータスコードで応答
例 3: ファイルのアップロード
クライアントがサポートされていないファイルフォーマットをアップロードしようとした場合、サーバーは次のように応答します。
- 不適切なフォーマットのファイルをアップロードしようとする
- エラーの理由を示す 422 ステータスコードで応答
ステータスコード 422 を引き起こすエラーの修正方法
JavaScript での修正
以下は、エラーを引き起こす可能性のある JavaScript のコード例です。
const data = { name: "", age: "twenty" }; // 不正なデータ
fetch('/api/endpoint', {
method: 'POST',
body: JSON.stringify(data),
headers: { 'Content-Type': 'application/json' }
});
このコードを次のように修正することで、正しいデータを送信できます。
const data = { name: "John Doe", age: 20 }; // 正しいデータ
// 同様の fetch コード
Python での修正
以下は、不正なリクエストの例です。
import requests
data = {'name': '', 'age': 'twenty'} # 不正なデータ
response = requests.post('https://api.example.com/endpoint', json=data)
適切なデータ検証を行うことで、エラーを防ぐことができます。
PHP での修正
誤ったデータを持つ API 呼び出しの例です。
$data = ['name' => '', 'age' => 'twenty']; // 不正なデータ
$response = file_get_contents('https://api.example.com/endpoint', false, stream_context_create([
'http' => [
'method' => 'POST',
'header' => 'Content-Type: application/json',
'content' => json_encode($data)
]
]));
サーバー側でデータの妥当性を検証することで、エラーを回避できます。
ステータスコード 422 の発生を防ぐための推奨事項
- クライアント側でのデータバリデーションの実施
- API 要件の明確な文書化
- エラーのロギングによる診断の簡素化
この記事では、HTTP ステータスコード 422 の詳細と、その適用例、さまざまなプログラミング言語でのエラー修正方法について説明しました。これにより、開発者はこのステータスコードをよりよく理解し、アプリケーション内での発生を防ぐ手助けとなるでしょう。
エラー状況 | 説明 |
---|---|
不正なデータフォーマット | サーバーが期待する形式と異なるデータが送信された場合 |
必須フィールドの欠如 | リクエストに必要なデータが欠けている場合 |
サポートされていない値 | 無効な選択肢が指定された場合 |