## 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 まわりの地図