何が起きたのか?
422 は「形式としては正しく読めるけれど、内容が筋として通らない」というサインです。 教室で言えば、回答用紙のマス目はきちんと埋まっているのに、年齢欄に「-3」と書かれている——文字としては読めるけれど、意味として受け付けられない、そんな感覚です。
400 が「文字がにじんで読めない」段階のエラーだとしたら、422 は「読めたけれど内容が変」段階のエラー。サーバーは中身を一段深く検証して、ビジネスルールに照らして「ここは無理」と返しています。
黒板からのひとこと
採点をしていると、字は綺麗で誤字もないのに、答えが現実と矛盾している答案に出会うことがあります。先生は「文字は読めたよ。でも答えとしては成立していないね」と返します。それが 422 のスタンスです。
このエラーが返ってきたときは、レスポンスボディに「どのフィールドのどの値が引っかかったか」が含まれていることが多いです。そこを丁寧に読むのが、最短ルートになります。
解決への歩み
大丈夫、次はこうしてみよう:
- レスポンスのエラーメッセージを精読:どのフィールドが、なぜ弾かれたかが書かれている
- 入力値を仕様と照合:型は合っているか、許容範囲・正規表現に収まっているか
- 関連リソースの整合性を確認:参照先が存在するか、状態遷移として許されるか
- バリデーション仕様を共有(管理者向け):API スキーマやエラーフォーマットをドキュメント化し、利用者が自力で直せるようにする
実際にはこう見える
$ リクエスト
curl -i https://example.com/some/path ↓ レスポンス
HTTP/1.1 422 Unprocessable Content
Content-Type: text/html; charset=utf-8
<!DOCTYPE html>
<html><body><h1>422 Unprocessable Content</h1></body></html>