HTTP协议主要由请求(Request)和响应(Response)两部分组成,每部分都包含三个主要组成部分。 下面是详细说明:
HTTP请求(Request)
1. 请求行(Request Line)
GET /api/users HTTP/1.1
包含三个元素:
- 请求方法:GET、POST、PUT、DELETE等
- 请求路径:/api/users
- HTTP协议版本:HTTP/1.1
2. 请求头(Request Headers)
Host: www.example.com
User-Agent: Mozilla/5.0
Content-Type: application/json
Accept: application/json
- 包含请求的附加信息
- 采用键值对形式
- 常见请求头包括:
- Host:指定服务器的域名
- User-Agent:客户端信息
- Content-Type:请求体的数据类型
- Accept:客户端期望接收的数据类型
3. 请求体(Request Body)
{
"username": "test",
"password": "123456"
}
- 可选部分,并不是所有请求都有请求体
- 通常在POST、PUT等方法中使用
- 数据格式由Content-Type指定
- 常见格式包括:
- application/json
- application/x-www-form-urlencoded
- multipart/form-data
- application/xml
HTTP响应(Response)
1. 响应行(Status Line)
HTTP/1.1 200 OK
包含三个元素:
- HTTP协议版本:HTTP/1.1
- 状态码:200、301、404、500等
- 状态描述:OK、Not Found、Internal Server Error等
2. 响应头(Response Headers)
Content-Type: application/json
Content-Length: 100
Cache-Control: no-cache
- 包含响应的附加信息
- 采用键值对形式
- 常见响应头包括:
- Content-Type:响应体的数据类型
- Content-Length:响应体的长度
- Cache-Control:缓存控制
- Set-Cookie:设置Cookie
3. 响应体(Response Body)
响应体可以包含多种类型的内容,每种类型都有其对应的Content-Type:
3.1 文本类型
- HTML (text/html)
<html>
<body>
<h1>Hello World</h1>
</body>
</html>
- JSON (application/json)
{
"id": 1,
"name": "John",
"status": "success"
}
- XML (application/xml)
<user>
<id>1</id>
<name>John</name>
</user>
- 纯文本 (text/plain)
Hello World
3.2 二进制类型
图片
- image/jpeg
- image/png
- image/gif
- image/webp
- image/svg+xml
音频
- audio/mpeg
- audio/wav
- audio/ogg
视频
- video/mp4
- video/webm
- video/ogg
文档
- application/pdf
- application/msword
- application/vnd.openxmlformats-officedocument.wordprocessingml.document
其他二进制
- application/octet-stream(通用二进制数据)
- application/zip(压缩文件)
- application/x-www-form-urlencoded(表单数据)
重要注意事项
-
分隔符
- 请求头和请求体之间必须有一个空行
- 响应头和响应体之间必须有一个空行
- 这些空行是协议规范的一部分
-
Content-Type
- 必须准确指定请求体和响应体的数据格式
- 影响数据的解析方式
- 可以包含字符集信息,如:Content-Type: text/html; charset=utf-8
-
编码
- 请求和响应都需要考虑字符编码
- 通常使用UTF-8编码
- 二进制数据可能需要进行Base64编码
-
大小限制
- 服务器通常会对请求体大小有限制
- 大文件传输需要考虑分块处理
- 可以使用压缩算法减小传输大小
示例
完整的HTTP请求示例:
POST /api/users HTTP/1.1
Host: www.example.com
Content-Type: application/json
User-Agent: Mozilla/5.0
Accept: application/json
{
"username": "test",
"password": "123456"
}
完整的HTTP响应示例:
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 46
Cache-Control: no-cache
{
"status": "success",
"message": "用户创建成功"
}