DESIGN / CODE / INFRA / AI

解説

APIが200なのにJSONを読めない?Content-Typeと本文を先に確かめよう

APIの通信は200なのに、JSONの解析で失敗した。成功の番号だけでなく、本当に期待したデータが返っているかを確認しよう。

APIが200なのにJSONを読めない?Content-Typeと本文を先に確かめよう
保存リストを見る →
この記事の道しるべ 5項目

APIの通信は200なのに、JSONの解析で失敗した。成功の番号だけでなく、本当に期待したデータが返っているかを確認しよう。

この記事は、WebのAPIから受け取る応答の読み分け。実際の認証情報を送る練習はせず、ローカルの小さな再現サーバーと架空の応答で整理するよ。

HTTP番号とデータ形式は別

HTTPのステータスは要求への応答の状態。Content-Typeは、本文をどういう種類として扱うかを伝えるヘッダーだよ。

HTTP/1.1 200 OK
Content-Type: application/json

{"ready": true}

この例なら、JSONというデータ形式の本文を返している。一方、200でtext/htmlが返り、本文がログイン画面になっている場合もある。番号が200だからJSONとして読めるとは限らないんだ。

よくある三つのずれ

応答の状態 次に確認すること
200・HTMLの本文 URL、認証切れ、転送先、入口の取り違え
200・JSON指定だが壊れた本文 実際の内容、途中の出力、データ生成
503・JSONのエラー本文 処理失敗の状態と、案内されたエラー情報

Content-TypeがJSONでも、構文として正しい保証ではない。逆に、JSONとして解析できたことだけで、業務処理が成功したとも言えないよ。

どの段階で読むかを決める

まず応答番号と種類を読み、仕様に合う本文の読み方を選ぶ。エラー時のJSONも読む設計なら、正常なデータと区別する。内容の型や必要な項目の確認も、その次に必要だよ。

ブラウザの開発者ツールならNetworkで対象の要求を選び、HeadersとResponse、転送後の最終URLなどを見る。Cookieや認証用の値は、そのまま人へ渡さないようにしよう。

小さな再現で比べたこと

編集部では、ローカルで200のJSON、200のHTML、JSON指定の不正な本文、503のJSONを返す入口を用意した。JSONとして解析できるかと、HTTPの成功かが別の結果になることを確認している。

これはログイン切れが必ず原因だと示す実験ではないよ。実際の応答を読んで、どこで期待とずれたかを確かめるための例なんだ。

空の成功応答は204、データ自体の確認はJSONの構文・型・必須項目へ。

参照した公式資料

確認日:2026年10月24日。

参考・出典

公開と変更の記録
  • :初回公開

日時は日本時間です。記載のある変更は、確認できた編集記録に基づきます。更新日の違いだけから変更内容を推測して載せることはありません。

更新・訂正の方針 →

みんなのコメント 0

感想や、試してみたことを聞かせてね。コメント・返信は承認後に公開されます。

最初のコメントをどうぞ。