## What — レスポンスは3点セット HTTP レスポンスもリクエストと同じ**ただのテキスト**で、ステータスコード・ヘッダ・ボディの3部品でできている。リクエストとの違いは、1行目が「何をしたいか」ではなく「どうなったか」になること。 | 部品 | 役割 | 例 | | --- | --- | --- | | ステータスコード | 結果の要約 | 200 / 404 / 500 | | ヘッダ | 返答の但し書き | `Content-Type: application/json` | | ボディ | 頼んだデータの本体 | API では基本 JSON | ## 実物 — 成功と失敗の生テキスト `GET /users/42` が成功したときの返答がこれ。 ```http HTTP/1.1 200 OK Content-Type: application/json {"id": 42, "name": "imutaro", "role": "engineer"} ``` - 1行目:ステータスコード(200=成功した) - 2行目:ヘッダ(「中身は JSON」という但し書き) - 空行を1つ挟んで、ボディに頼んだデータ本体 存在しない `/users/9999` を頼むと、**同じ書式のまま中身だけ失敗に変わる**。 ```http HTTP/1.1 404 Not Found Content-Type: application/json {"error": "user not found"} ``` 失敗でもボディは空にならず、エラーの詳細が書いてある。コードだけ見て止まらず、ボディまで読むと原因が早くわかる。 ## ステータスコードは百の位だけで読める - **2xx = 成功** — 200 OK:成功した / 201 Created:作成した / 204:中身なし成功 - **4xx = 自分のせい** — 400:注文の書式が変 / 401:名乗っていない(未認証) / 403:権限がない / 404:その資源は存在しない - **5xx = 相手のせい** — 500:サーバーエラー / 502・503:後段が死んでいる・過負荷。自分の注文は悪くないので、待つ ## 関連 - [[HTTPリクエストの構造|HTTPリクエストの構造]] — 対になる注文側の4点セット - [[Bearer]] — 401 と 403 で打つ手が違う話 - [[API]] — API まわりの地図