# Summary
本质是一个命令行工具,用来发 HTTP 请求。
```shell
curl --location --request POST 'http://localhost:8000/chat/stream' \
--header 'Content-Type: application/json' \
--data-raw '{
"message": "帮我规划一个北京三日游",
"session_id": "test-001"
}'
```
# Cues
# Notes
你这个问题,本质上是**“协议与数据格式”辨析的经典问题变体**。
---
## 拆开来看
1. **curl**
- 是一个命令行工具,用来发 HTTP 请求。
2. **--location --request POST '[http://localhost:8000/chat/stream](http://localhost:8000/chat/stream)'**
- 表示走 **HTTP 协议**,方法是 `POST`,目标是 `http://...`。
- 所以传输协议是 **HTTP/1.1 或 HTTP/2**(由服务器和客户端协商)。
3. **--header 'Content-Type: application/json'**
- 表示请求体里数据的格式是 **JSON**。
- 这告诉服务器“我发给你的内容是 JSON,请按 JSON 来解析”。
4. **--data-raw '{... }'**
- 实际上传输的数据内容,符合 JSON 语法。
---
## 结论
这个 curl 请求的本质是:
- **传输层面**:用 **HTTP 协议**(POST 方法)。
- **数据内容层面**:用 **JSON 格式**作为请求体。
换句话说:
它不是一种新的协议,而是“HTTP 协议 + JSON 格式”的常见组合。
---
要不要我帮你画一个简单的分层图(从网络协议栈到底层 JSON 数据)来更直观理解?