Skip to content

HTTP 请求方法

HTTP 定义了一组请求方法来指示要对给定资源执行的所需操作。这些请求方法通常被称为 HTTP 动词。它们中的每一个都实现了不同的语义,但是它们中的一组共享一些共同的特征:例如请求方法可以是安全的、幂等的或可缓存的。

  1. GET
  2. POST
  3. PUT
  4. DELETE
  5. HEAD
  6. PATCH
  7. OPTIONS
  8. CONNECT
  9. TRACE

关于幂等:在 HTTP 协议中,幂等请求是指不管进行多少次请求,资源的状态都是一样的。这是因为在幂等请求中,如果请求返回了失败的响应(如 404 Not Found),客户端可以不做任何重试,因为即使再次发送相同的请求,也不可能得到不同的响应。 常见的幂等请求包括 GET、HEAD、PUT 和 DELETE。相反的,POST、PATCH 和其他请求通常不具有幂等性,因为它们会改变服务器上的资源状态。 可以通过幂等性来保证请求的可靠性和可重复性,让请求具有更高的预测性和可控性。在进行接口测试的时候,往往需要针对幂等请求进行多次测试,以验证其幂等性是否符合预期。

常用

GET 查询

The GET method requests a representation of the specified resource. Requests using GET should only retrieve data.

GET 方法请求指定资源的表示,使用 GET 方法的请求应该只是获取数据。

在HTTP请求方法中,GET 是一种用于获取资源表示的请求方法。它通常用于获取特定资源的信息。与POST、PUT 或 DELETE 方法不同,使用 GET 方法的请求不会对资源进行修改或删除,而是只返回资源的当前表示。

例如,在浏览器中输入一个网址或者点击一个链接时,通常是使用 GET 方法对服务器请求特定网页的资源表示,然后服务器将该网页作为响应返回给浏览器。

因为 GET 方法不会对资源进行修改,所以它是安全和幂等的,也就是说该请求的重复执行不会造成任何副作用,只会返回相同的资源表示。

The HEAD method asks for a response identical to a GET request, but without the response body.

HEAD 方法请求与 GET 请求相同的响应,但不包括响应体。

在HTTP请求方法中,HEAD 方法与 GET 方法非常相似,但是它只返回响应头部信息,不包括响应体。它通常用于检查资源的元数据,比如验证资源是否存在、检查资源的状态、获取资源的 MIME 类型等。

与 GET 方法类似,使用 HEAD 方法的请求也不会对资源进行修改或删除,因此它也是安全和幂等的。但是与 GET 方法不同的是,使用 HEAD 方法的请求通常不会消耗服务器和网络的资源,因为它只返回响应头信息。

值得注意的是,在使用 HEAD 方法的请求中,服务器仍然会执行请求并返回正确的响应头信息,只是不会包含响应体。这就是与 GET 方法的主要不同之处。

POST 新增

The POST method submits an entity to the specified resource, often causing a change in state or side effects on the server.

POST 方法向指定资源提交一个实体,通常会导致服务器上的状态变化或产生副作用。

在HTTP请求方法中,POST 方法通常用来向服务器提交数据,以便对该资源进行修改或处理。例如,提交一个表单、发布一条博客或者上传文件等。

与 GET 和 HEAD 方法不同,使用 POST 方法的请求可能会对服务器上的资源进行修改或创建新的资源,并且可能会产生一些副作用,比如创建新的文件或者记录。因此,在使用 POST 方法时,通常需要慎重考虑,确保使用正确的请求方式和参数,以避免不必要的副作用或安全风险。

需要注意的是,POST 请求通常不是幂等的,即重复执行 POST 请求可能会造成多次状态变化或产生多个副作用。如果需要实现幂等性,可以选择使用 PUT 或 DELETE 方法来替代 POST 方法。

PUT 修改

The PUT method replaces all current representations of the target resource with the request payload.

PUT 方法用请求数据替换目标资源的所有当前呈现。

在 HTTP 请求方法中,PUT 方法用于向服务器上传一个资源,并用上传的数据替换原有的目标资源。PUT 请求中的请求负载包含了完整的资源表述,这意味着它可以用来创建、更新或替换目标资源。因此,使用 PUT 方法的请求通常用于实现 RESTful API 中的资源更新或创建操作。

与 POST 方法类似,使用 PUT 方法的请求可能会对服务器上的资源进行修改或创建新的资源,但是它要求上传的请求负载必须包含完整的资源表述,以便服务器进行完整的替换操作。同时,PUT 请求通常需要保证幂等性,即重复执行 PUT 请求对目标资源的状态不会产生改变。

需要注意的是,PUT 请求一般不会产生副作用,即它不会修改服务器上的其他资源或状态。如果需要删除一个资源,应该使用 DELETE 方法。

PATCH 修改

The PATCH method applies partial modifications to a resource.

PATCH 方法对资源进行部分修改。

在HTTP请求方法中,PATCH是一种用于修改资源的请求方法。与PUT方法不同,PATCH方法是用于对资源进行部分修改的。例如,在一个包含多个属性的资源中,PATCH方法可以用于修改其中的一个或几个属性,而不需要对整个资源进行完整的替换。此方法通常用于减少请求的数据量,同时避免了对资源的过度替换。

当发送一个PATCH请求时,必须指定对资源进行的修改,可以使用一些类似于JSON Patch或者JSON Merge Patch 的标准文本格式来指定修改内容。在响应中,服务器会返回响应码和修改后的资源的状态。

DELETE 删除

The DELETE method deletes the specified resource.

DELETE 方法删除指定的资源。

DELETE 是 HTTP 协议中的一种请求方法,用于删除指定的资源。在 DELETE 请求中,客户端向指定的 URL 发送一个请求,通知服务器删除该 URL 对应的资源。该方法主要用于删除资源,例如删除文件、删除数据库中的记录等等。如果服务器成功删除了资源,它应该应答一个状态码为 204 No Content 的响应,表示服务器成功执行了这个请求并且不会返回任何实体主体。

其他

OPTIONS

OPTIONS 方法描述了目标资源的通信选项。

OPTIONS 是 HTTP 协议中的一种请求方法,用于查询目标资源支持的通信选项。在 OPTIONS 请求中,客户端向指定的 URL 发送一个请求,通知服务器查询该 URL 对应的资源支持的通信选项,例如哪些请求头被支持、支持哪些请求方法、是否支持缓存等等。服务器应该在响应中返回一个状态码为 200 OK 的响应,同时在响应头中包含了资源支持的选项信息。这个方法可以用来帮助客户端了解服务器支持的功能,以便客户端能够更好地与服务器进行通信。

CONNECT

The CONNECT method establishes a tunnel to the server identified by the target resource.

CONNECT 方法建立到标识目标资源的服务器的隧道。

CONNECT 是 HTTP 协议中的一种请求方法,它被用于建立到一个通过 HTTP 代理服务器的隧道通信。在 CONNECT 请求中,客户端向代理服务器发送一个 CONNECT 请求,请求连接到目标服务器。代理服务器最终会建立一个 TCP 连接到目标服务器,然后将两端的数据交换起来。CONNECT 方法允许客户端通过 HTTP 代理与目标服务器进行直接的、安全的通信。通常,CONNECT 方法用于建立 HTTPS 连接。

TRACE

The TRACE method performs a message loop-back test along the path to the target resource.

TRACE 方法沿着到目标资源的路径执行消息回环测试。

TRACE 是 HTTP 协议中的一种请求方法,用于检测在请求-响应链路中,由客户端到服务器所原样传输的信息。在 TRACE 请求中,客户端向服务器发送一个 TRACE 请求,并在请求头中包含了一个 "Max-Forwards" 字段。服务器在接收到 TRACE 请求后,将请求头和请求体返回给客户端,并在响应头中包含了 "Via" 字段。客户端会将该请求发送到下一个跃点,并将 "Max-Forwards" 字段减 1,直到它到达目的地或者 "Max-Forwards" 字段为 0。每个中介节点都会在 "Via" 字段中添加自己的信息。这种方法可以用于测试请求-响应链路中的信息是否按照预期的方式传输。


参考资料:mdn web docs: HTTP request methods