请求报文
HTTP 请求报文由三部分组成:请求行、请求头、请求体
基本结构
请求行
请求头1: 值1
请求头2: 值2
...
(空行,分隔请求头和请求体)
请求体(可选)
各部分详解
1. 请求行(Request Line)
包含三个信息:请求方法、请求 URL、HTTP 协议版本,用空格分隔。
格式:
Method Request-URI HTTP-Version
示例:
GET /api/users HTTP/1.1
POST /api/login HTTP/1.1
常见请求方法:
GET:获取资源(无请求体)POST:提交数据(有请求体)PUT:更新资源DELETE:删除资源PATCH:部分更新资源
2. 请求头(Request Headers)
由键值对组成,描述请求的元数据(如客户端信息、接受的数据类型等)。
常见请求头:
Host:服务器域名和端口(必需)User-Agent:客户端浏览器/设备信息Accept:客户端可接受的响应数据类型(如application/json)Content-Type:请求体的数据类型(如application/json、multipart/form-data)Authorization:身份验证信息(如Bearer token)Cookie:客户端存储的 Cookie 信息
3. 请求体(Request Body)
可选部分,仅在 POST、PUT 等方法中使用,用于传递数据(如表单数据、JSON 等)。
示例:
- JSON 格式:
{"username": "admin", "password": "123456"} - 表单格式(
application/x-www-form-urlencoded):username=admin&password=123456
完整请求报文示例
GET 请求(无请求体)
GET /api/users?page=1&limit=10 HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/96.0.4664.110
Accept: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
POST 请求(带 JSON 体)
POST /api/login HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/96.0.4664.110
Accept: application/json
Content-Type: application/json
Content-Length: 45
{"username": "admin", "password": "123456"}
POST 表单请求
POST /api/register HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/96.0.4664.110
Accept: */*
Content-Type: application/x-www-form-urlencoded
Content-Length: 35
username=test&email=test@example.com
关键点
- 各部分之间用 换行符(\r\n) 分隔
- 请求头与请求体之间必须有一个 空行
Content-Length头指定请求体的字节长度Content-Type需与请求体格式一致,否则服务器可能无法正确解析
HTTP 响应报文是服务器对客户端请求的回应,它由三部分组成:状态行(Status Line)、响应头(Response Headers)、响应体(Response Body)。
响应报文
响应报文结构
状态行
响应头1: 值1
响应头2: 值2
...
(空行,分隔响应头和响应体)
响应体(可选)
各部分详解
1. 状态行
包含三个信息:HTTP 协议版本、状态码、状态描述,用空格分隔。
格式:
HTTP-Version Status-Code Reason-Phrase
示例:
HTTP/1.1 200 OK
HTTP/1.1 404 Not Found
状态码分类:
1xx(信息):请求已接收,继续处理(如100 Continue)2xx(成功):请求已成功处理(如200 OK、201 Created)3xx(重定向):需要进一步操作完成请求(如301 Moved Permanently、302 Found)4xx(客户端错误):请求有错误(如400 Bad Request、401 Unauthorized、404 Not Found)5xx(服务器错误):服务器处理请求出错(如500 Internal Server Error、503 Service Unavailable)
2. 响应头
由键值对组成,描述响应的元数据(如服务器信息、响应数据类型等)。
常见响应头:
Server:服务器软件信息(如nginx/1.21.4)Content-Type:响应体的数据类型(如application/json、text/html)Content-Length:响应体的字节长度Date:服务器响应时间Set-Cookie:服务器向客户端设置 CookieCache-Control:缓存控制策略(如max-age=3600)Access-Control-Allow-Origin:跨域资源共享(CORS)配置
3. 响应体
可选部分,包含服务器返回的实际数据(如 HTML 页面、JSON 数据、图片等)。
示例:
- JSON 格式(接口响应常见):
{ "code": 200, "message": "success", "data": { "id": 1, "name": "John Doe" } } - HTML 格式(网页响应):
<!DOCTYPE html> <html> <head><title>Example</title></head> <body><h1>Hello World</h1></body> </html>
完整响应报文示例
成功响应(200 OK)
HTTP/1.1 200 OK
Server: nginx/1.21.4
Date: Wed, 30 Jul 2025 08:30:00 GMT
Content-Type: application/json
Content-Length: 88
Cache-Control: no-cache
{
"code": 200,
"message": "请求成功",
"data": {"username": "admin", "role": "superuser"}
}
客户端错误响应(404 Not Found)
HTTP/1.1 404 Not Found
Server: Apache/2.4.41
Date: Wed, 30 Jul 2025 08:35:00 GMT
Content-Type: text/html
Content-Length: 152
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL was not found on this server.</p>
</body></html>
服务器错误响应(500 Internal Server Error)
HTTP/1.1 500 Internal Server Error
Server: Tomcat/9.0.58
Date: Wed, 30 Jul 2025 08:40:00 GMT
Content-Type: text/plain
Content-Length: 34
Internal Server Error: Database connection failed
关键点
- 与请求报文类似,各部分用 换行符(\r\n) 分隔
- 响应头与响应体之间必须有一个 空行
Content-Type决定了客户端如何解析响应体(如 JSON 需要解析为对象,HTML 需要渲染为页面)- 状态码是判断请求是否成功的核心依据,配合响应体中的业务码(如
code: 200)可更精准处理结果
5429

被折叠的 条评论
为什么被折叠?



