理解HTTP协议
文章目录
- HTTP是什么?
- HTTP请求和响应的结构
- HTTP请求的组成
- HTTP响应的组成
- 常用的HTTP方法详解
- GET - 获取数据
- POST - 创建数据
- PUT - 更新数据
- DELETE - 删除数据
- HTTP状态码
- 2xx 成功类
- 3xx 重定向类
- 4xx 客户端错误
- 5xx 服务器错误
- 实际开发中的HTTP最佳实践
- 1. 合理使用HTTP方法
- 2. 设计RESTful API
- 3. 合理使用状态码
HTTP是什么?
HTTP(HyperText Transfer Protocol)超文本传输协议,当你在地址栏输入一个网址,浏览器就会用HTTP协议向服务器发起请求,服务器再用HTTP协议把网页内容返回给你。HTTP协议定义了客户端如何向服务器请求数据,服务器如何响应请求,以及数据如何在网络中传输。可以说,没有HTTP就没有今天的万维网。
HTTP请求和响应的结构
HTTP请求的组成
一个HTTP请求包含四个部分:
-
请求行:包含请求方法、URL和HTTP版本
-
请求头:包含各种元信息
-
空行:分隔请求头和请求体
-
请求体:POST、PUT等方法的数据载荷
HTTP响应的组成
HTTP响应也有四个部分:
-
状态行:HTTP版本、状态码和状态描述
-
响应头:服务器返回的元信息
-
空行
-
响应体:实际的数据内容
常用的HTTP方法详解
GET - 获取数据
最常用的方法,用于获取资源。GET请求应该是幂等的,也就是说多次执行同一个GET请求的结果应该是一样的。
POST - 创建数据
用于向服务器提交数据,通常用于创建新资源。
PUT - 更新数据
用于更新整个资源。
DELETE - 删除数据
用于删除资源,也应该是幂等的。
HTTP状态码
状态码是服务器告诉客户端请求处理结果的方式,掌握常见状态码对调试很有帮助:
2xx 成功类
- 200 OK:请求成功
- 204 No Content:请求成功但无返回内容
3xx 重定向类
- 301 Moved Permanently:永久重定向
- 302 Found:临时重定向
- 304 Not Modified:资源未修改,可使用缓存
4xx 客户端错误
- 400 Bad Request:请求格式错误
- 401 Unauthorized:需要身份验证
- 403 Forbidden:服务器拒绝请求
- 404 Not Found:资源不存在
5xx 服务器错误
- 500 Internal Server Error:服务器内部错误
- 502 Bad Gateway:网关错误
- 503 Service Unavailable:服务过载
实际开发中的HTTP最佳实践
1. 合理使用HTTP方法
- GET用于获取数据,不要用于修改操作
- POST用于创建资源
- PUT用于完整更新
- DELETE用于删除
2. 设计RESTful API
GET /api/users # 获取用户列表
POST /api/users # 创建用户
GET /api/users/123 # 获取特定用户
PUT /api/users/123 # 更新用户
DELETE /api/users/123 # 删除用户
3. 合理使用状态码
不要所有接口都返回200,根据实际情况选择合适的状态码,也可以定义枚举类来表示。