400・401・403・422 を見分ける API エラー切り分け手順
不正なリクエスト、認証失敗、権限不足、バリデーションエラーを混同せずに切り分けるための実践的な API デバッグ手順です。
400、401、403、422 をすべて同じような API 失敗コードとして扱うと、調査の初動で大きく遠回りしがちです。実際には、リクエスト構造、認証、権限、意味的なバリデーションのどこで失敗したかを表すコードであり、次に確認すべき観点も大きく変わります。
大切なのは、どの境界で最初に失敗したのかを先に決めることです。構造が壊れているのか、認証が通っていないのか、権限が足りないのか、あるいは形式は正しいが業務ルールに反しているのか。この順序で切り分けると、原因調査がかなり機械的になります。
まずリクエスト構造の問題を auth から切り離す
サーバーがリクエスト自体を正しく解釈できないなら、最初に疑うべきは 400 Bad Request です。壊れた JSON、矛盾するクエリ、誤った content-type、重複パラメータなどは、認証や権限のロジックに入る前に弾かれることがあります。
そのため 400 は 401 や 403 とは別の思考で扱う必要があります。まずはそのリクエストがサーバーにとって解釈可能な形かどうかを確認してください。
- 実際に送られた body と headers を再構成する。
- JSON や payload の構造を検証する。
- query parameter や content-type を見直してから次へ進む。
この段階では、HTTP Status Code Explorer と JSON Validator を組み合わせると判断しやすくなります。
422 は形式は正しいが意味的に受理できないと捉える
422 Unprocessable Entity は、構文的には読めるリクエストが、フィールド検証や業務ルールの段階で拒否されたことを示します。つまり 400 のような解析不能な壊れ方ではなく、理解はできるが受理はできない、という状態です。
そのため 422 では parser ではなく、required field、range、enum、cross-field validation などの証拠を確認すべきです。
400: 構造を信頼できない401: 認証が成立していない403: 認証は成立したが許可されない422: 形式は正しいが意味的に不正
この 4 つを分けるだけで、API 障害の初動はかなり速くなります。
HTTP Status Code Explorer
Search common HTTP status codes, compare confusing client and server failures, and keep a sharper API debugging checklist in the browser.
JSON Validator – Check JSON Syntax & Find Errors
Strict, fast, and secure client-side JSON validator. Features live syntax highlighting, exact error line detection, and detailed context snippets.
JWT Decoder
Decode and inspect JWT tokens instantly to view headers, payloads, and expiration status locally in your browser.