http 报文、编码格式Content-Type
一、http报文结构图
1、请求报文
┌───────────────────────────────────────────────┐
│ 请求行 (Request Line) │
│ 方法 (GET/POST/...) 路径 HTTP版本 │
│ 例如:GET /index.html HTTP/1.1 │
├───────────────────────────────────────────────┤
│ 请求头部 (Headers) │
│ Host: www.example.com │
│ User-Agent: Mozilla/5.0 │
│ Accept: text/html │
│ ... │
├───────────────────────────────────────────────┤
│ 空行 (CRLF) │
├───────────────────────────────────────────────┤
│ 请求体 (Body)(可选) │
│ 一般在 POST、PUT 请求中使用 │
│ username=abc&password=123 │
└───────────────────────────────────────────────┘
补充:
Content-Type 是一个请求头部字段(Header),即请求头部包含编码格式
通常在请求中有 请求体(Body) 时才需要加上,比如在 POST、PUT 请求中。它的作用是告诉服务器,请求体中的数据类型是什么,以便服务器正确解析。
2、http 响应报文
┌───────────────────────────────────────────────┐
│ 状态行 (Status Line) │
│ HTTP版本 状态码 状态描述 │
│ 例如:HTTP/1.1 200 OK │
├───────────────────────────────────────────────┤
│ 响应头部 (Headers) │
│ Content-Type: text/html │
│ Content-Length: 1234 │
│ Server: Apache │
│ ... │
├───────────────────────────────────────────────┤
│ 空行 (CRLF) │
├───────────────────────────────────────────────┤
│ 响应体 (Body)(可选) │
│ HTML、JSON 或其他内容 │
│ <html>...</html> 或 {"status": "ok"} │
└───────────────────────────────────────────────┘
3、图解说明:
-
请求行 / 状态行 是报文的第一行,定义了请求类型或响应状态。
-
头部字段(Headers) 提供了请求或响应的元数据(如主机、浏览器、内容类型等)。
-
空行 是固定格式,用于分隔头部和正文。
-
请求体/响应体 是可选内容,通常包含用户提交的数据或服务器返回的数据。
4、构造请求体
使用 curl 构造请求体:
# 发送 JSON
curl -X POST http://localhost/api \
-H "Content-Type: application/json" \
-d '{"name": "Alice", "age": 25}'
# 发送表单
curl -X POST http://localhost/api \
-d "name=Alice&age=25"
# 上传文件
curl -X POST http://localhost/upload \
-F "file=@myfile.txt"
python request
# JSON 请求体
requests.post(url, json={"name": "Alice"})
# 表单请求体
requests.post(url, data={"name": "Alice"})
# 文件上传请求体
requests.post(url, files={"file": open("myfile.txt", "rb")})
二、请求头和响应头中的编码格式
1、什么是 Content-Type?
Content-Type 是 HTTP 请求或响应中的一个头部字段,用于说明正文内容(Body)的格式类型。
是 HTTP 中的“语言说明书”,告诉接收方正文的数据格式;正确设置它,能保证数据被正确解析与处理。
它的语法格式是:
Content-Type: 媒体类型/子类型
2、常见的七种 Content-Type 类型说明
| 类型 | 说明 | 典型用途或例子 |
|---|---|---|
application/json |
表示数据是 JSON 格式 | {"key": "value"} |
application/x-www-form-urlencoded |
表示表单数据被编码成键值对,类似 URL 查询参数 | key1=value1&key2=value2(POST 表单默认) |
multipart/form-data |
表示多部分数据,常用于上传文件等复杂结构 | 表单上传文件(带有 boundary) |
text/plain |
纯文本格式 | 一般用于调试或简单文本传输 |
application/xml |
XML 格式 | SOAP 接口或某些老系统 API |
application/octet-stream |
二进制流数据 | 上传文件或下载文件流 |
text/html |
HTML 文档 | 浏览器或爬虫获取网页内容 |

浙公网安备 33010602011771号