## What — リクエストは4点セット
HTTP リクエストの実体は、回線を流れる**ただのテキスト**。メソッド・パス・ヘッダ・ボディの4部品でできていて、この4つの名前がわかればどんなリクエストも読める。
| 部品 | 役割 | 例 |
| --- | --- | --- |
| メソッド | 何をしたいか | GET:取得 / POST:作成 / PUT・PATCH:更新 / DELETE:削除 |
| パス | どの資源に対してか | `/users/42` = 42番のユーザー |
| ヘッダ | メタ情報(データの取り扱い説明) | `Authorization`(認証)、`Content-Type`(データ形式) |
| ボディ | 渡すデータ本体 | GET では空。POST / PUT で使う |
## 実物 — POST リクエストの生テキスト
ユーザーを新規作成する POST リクエストは、実際にはこのテキストが回線を流れている。
```http
POST /users HTTP/1.1
Host: api.example.com
Authorization: Bearer eyJhbGci...
Content-Type: application/json
{"name": "imutaro", "role": "engineer"}
```
- 1行目:メソッド(POST=作成)+パス(`/users`)
- 2〜4行目:ヘッダ(宛先・名乗り・データ形式)
- **空行を1つ挟んで**ボディ。ヘッダとボディの境界はこの空行だけ
GET は「取得」なので渡すデータがなく、ボディごと消えて1行目+ヘッダだけになる。
```http
GET /users/42 HTTP/1.1
Host: api.example.com
Accept: application/json
```
## なぜヘッダ(メタ情報)が要るのか
**ボディ=データそのもの、ヘッダ=そのデータの「取り扱い説明」**。`{"name": "imutaro"}` だけ届いても、サーバーはそれが JSON かどうか(Content-Type)も、誰の操作か(Authorization)も判断できない。
しかも HTTP はステートレス=サーバーは前回の注文を覚えていない。だから「私は誰で、どんな形式で送るか」を毎回の注文票に全部書く必要があり、その置き場所がヘッダ。
## 関連
- [[HTTPレスポンスの構造|HTTPレスポンスの構造]] — この注文への返答側の3点セット
- [[HTTPリクエストの流れ|HTTPリクエストの流れ]] — このテキストが回線を流れるまでの全工程
- [[curl]] — この4部品をオプションで組み立てるコマンド
- [[API]] — API まわりの地図