■ 結論(まずシンプルに)
👉 headers と body は別物
👉 JSONで送るのは基本「body」だけ
■ headers(ヘッダー)
👉 「説明・メタ情報」
例👇
|
1 2 3 4 |
headers: { "Content-Type": "application/json", "Authorization": "Bearer xxxxx" } |
意味👇
| ヘッダ | 意味 |
|---|---|
| Content-Type | bodyの中身の形式 |
| Authorization | 認証情報 |
👉 中身そのものではない
■ body(ボディ)
👉 「実際に送りたいデータ本体」
|
1 2 3 |
body: JSON.stringify({ user_id: "abc123" }) |
👉 これがPHPの👇になる
|
1 |
$request["user_id"] |
■ 「どっちもJSONで送れるの?」の答え
■ ❌ headersはJSONじゃない
👉 ただのキーと値のセット
内部的には👇
|
1 2 |
Content-Type: application/json Authorization: Bearer xxxxx |
👉 JSONではない
■ ✅ bodyはJSONで送れる
👉 というか今はこれが主流
|
1 |
body: JSON.stringify({...}) |
■ イメージで理解(超重要🔥)
|
1 2 3 4 5 6 7 8 9 10 11 |
POST /api/login HTTP/1.1 Host: example.com 【ヘッダー】 Content-Type: application/json Authorization: Bearer abc123 【ボディ】 { "user_id": "abc123" } |
■ よくある混乱ポイント
■ ❌ headersにデータ入れようとする
headers: {
"user_id": "abc123" ← ダメではないが用途違う
}
👉 これは「説明」扱いになる
■ ❌ bodyをそのままオブジェクトで送る
body: {
user_id: "abc123"
}
👉 ダメ(文字列じゃないといけない)
■ ✅ 正解
|
1 2 3 |
body: JSON.stringify({ user_id: "abc123" }) |
■ PHP側でどう受け取るか
WordPress REST APIなら👇
|
1 |
$request["user_id"] |
または
|
1 2 |
$data = $request->get_json_params(); $user_id = $data["user_id"]; |
■ さらに理解を深める(中級🔥)
■ Content-Typeの意味
"Content-Type": "application/json"
👉 サーバーに対して👇
「bodyはJSONですよ」
と伝えている
■ もしこれを変えると?
form形式👇
|
1 2 3 4 |
headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: "user_id=abc123" |
👉 PHPでは👇
|
1 |
$_POST["user_id"] |
■ まとめ
| 項目 | 正体 | JSON? |
|---|---|---|
| headers | 説明 | ❌ |
| body | データ本体 | ✅ |
コメント