一、什么是HTTP?
HTTP,即超文本传输协议,是一种实现客户端和服务器之间通信的响应协议,它是用作客户端和服务器之间的请求。 客户端(浏览器)会向服务器提交HTTP请求;然后服务器向客户端返回响应;其中响应包含有关请求的状态信息,还可能包含请求的内容。
二、HTTP的8种请求方式
HTTP/1.1协议中共定义了八种方法(有时也叫“动作”),来表明Request-URL指定的资源不同的操作方式 其中: HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。 HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法
1. get(用来获取资源)
-
功能:请求指定的资源。
-
特点:
- 常用于请求数据而不改变服务器上的资源。
- 请求参数通过URL传递,参数对大小有限制。
- 请求可以被缓存。
- 对应的URL可以被收藏。
- 敏感数据不应使用GET方法(因为参数暴露在URL中)。
示例:
场景:获取用户信息列表。
http 复制代码 POST /users HTTP/1.1 Host: www.example.com Content-Type: application/json { "name": "John Doe", "email": "john.doe@example.com", "age": 30 }解析:这个请求会将请求体中的新用户数据发送到服务器,服务器会创建这个新用户并返回创建的用户信息。
2. POST(新增资源)
-
功能:向指定资源提交数据进行处理(如提交表单或上传文件)。
-
特点:
- 数据包含在请求体中,适用于传递大量数据。
- 常用于表单提交或数据上传。
- 请求参数不显示在URL中,较为安全。
- 不可缓存。
示例:
场景:创建一个新用户。
http 复制代码 POST /users HTTP/1.1 Host: www.example.com Content-Type: application/json { "name": "John Doe", "email": "john.doe@example.com", "age": 30 }解析:这个请求会将请求体中的新用户数据发送到服务器,服务器会创建这个新用户并返回创建的用户信息。
3. PUT(更新资源)
-
功能:上传指定资源,通常用于更新现有资源或创建新资源。
-
特点:
-
请求体包含要上传的数据。
-
幂等性:多次请求会产生相同的效果。
-
适用于上传文件或更新数据。
示例:
场景:更新某个用户的全部信息。
http 复制代码 PUT /users/123 HTTP/1.1 Host: www.example.com Content-Type: application/json { "name": "John Doe", "email": "john.doe@example.com", "age": 31 } -
解析:这个请求会用请求体中的数据更新ID为123的用户的全部信息。
4. DELETE(删除)
-
功能:删除指定的资源。
-
特点:
- 请求通常不包含请求体。
- 幂等性:多次请求会产生相同的效果。
示例:
场景:删除某个用户。
http 复制代码 DELETE /users/123 HTTP/1.1 Host: www.example.com解析:这个请求会删除ID为123的用户。
5. HEAD
-
功能:请求指定资源的响应头,与GET请求类似,但不返回响应体。
-
特点:
- 常用于检查资源的元信息(如响应头的内容、资源是否存在)。
- 用于节省带宽,因为不传输响应体。
示例:
场景:检查用户列表的元信息(如大小、最后修改时间)。
http 复制代码 HEAD /users HTTP/1.1 Host: www.example.com解析:这个请求会返回用户列表的响应头信息,而不包含实际的用户数据。
6. OPTIONS
-
功能:请求有关通信选项的信息,描述服务器的通信能力。
-
特点:
- 用于检查服务器支持哪些HTTP方法。
- 可用于CORS(跨域资源共享)中的预检请求。
示例:
场景:检查服务器支持的HTTP方法。
http 复制代码 OPTIONS /users HTTP/1.1 Host: www.example.com解析:这个请求会返回服务器在/users路径上支持的HTTP方法。
7. PATCH
-
功能:对资源进行部分修改。
-
特点:
- 请求体包含需要修改的数据,通常是一个差异(delta)。
- 不是幂等的(同样的请求多次可能产生不同的效果)。
示例:
场景:更新某个用户的部分信息。
http 复制代码 PATCH /users/123 HTTP/1.1 Host: www.example.com Content-Type: application/json { "age": 32 }解析:这个请求会将ID为123的用户的年龄更新为32,而其他信息保持不变。
8. TRACE
-
功能:回显服务器收到的请求,主要用于诊断或测试。
-
特点:
- 可以查看请求经过的路径。
- 由于安全问题,通常不推荐使用。
示例:
场景:回显收到的请求,用于诊断。
http 复制代码 TRACE /users HTTP/1.1 Host: www.example.com解析:这个请求会回显服务器收到的完整请求信息,用于诊断请求路径等问题。