HTTP 定义了一组请求方法, 以表明要对给定资源执行的操作
GET方法请求一个指定资源的表示形式. 使用GET的请求应该只被用于获取数据.
HEAD方法请求一个与GET请求的响应相同的响应,但没有响应体.
请求资源的首部信息, 并且这些首部与 HTTP GET
方法请求时返回的一致. 该请求方法的一个使用场景是在下载一个大文件前先获取其大小再决定是否要下载, 以此可以节约带宽资源.
POST方法用于将实体提交到指定的资源,通常导致状态或服务器上的副作用的更改. 发送数据给服务器. 请求主体的类型由 Content-Type
首部指定.
一个
POST
请求通常是通过 HTML 表单发送, 并返回服务器的修改结果. 在这种情况下, content type 是通过在<form>
元素中设置正确的enctype
属性, 或是在<input>
和<button>
元素中设置formenctype
属性来选择的:
application/
x-www-form-urlencoded
: 数据被编码成以'&'
分隔的键-值对, 同时以'='
分隔键和值. 非字母或数字的字符会被 percent-encoding: 这也就是为什么这种类型不支持二进制数据的原因 (应使用multipart/form-data
代替).multipart/form-data
text/plain
PUT方法用请求有效载荷替换目标资源的所有当前表示。 PUT
方法被用来表示对资源进行整体覆盖,而PATCH是部分修改。
DELETE方法删除指定的资源。
CONNECT方法建立一个到由目标资源标识的服务器的隧道。它可以用来创建隧道(tunnel)。
用于获取目的资源所支持的通信选项。客户端可以对特定的 URL 使用 OPTIONS 方法,也可以对整站(通过将 URL 设置为“*”)使用该方法。
TRACE方法沿着到目标资源的路径执行一个消息环回测试。 实现沿通向目标资源的路径的消息环回(loop-back)测试 ,提供了一种实用的 debug 机制。请求的最终接收者应当原样反射(reflect)它接收到的消息,除了以下字段部分,作为一个Content-Type
为 message/http
的200(OK)响应的消息的主体(body)返回给客户端 。
PATCH方法用于对资源应用部分修改。与 POST
方法类似,PATCH
方法是非幂等的,这就意味着连续多个的相同请求会产生不同的效果。
请求方法 | 请求是否有主体 | 成功的响应是否有主体 | 安全 | 幂等 | 可缓存 | HTML 表单是否支持 |
GET | 否 | 是 | 是 | 是 | 是 | 是 |
HEAD | 否 | 否 | 是 | 是 | 是 | 否 |
POST | 是 | 是 | 否 | 否 | 否 | 是 |
PUT | 是 | 否 | 否 | 是 | 否 | 否 |
DELETE | 可以有 | 可以有 | 否 | 是 | 否 | 否 |
CONNECT | 否 | 是 | 否 | 否 | 否 | 否 |
OPTIONS | 否 | 否 | 是 | 是 | 否 | 否 |
TRACE | 否 | 否 | 否 | 是 | 否 | 否 |
PATCH | 是 | 否 | 否 | 否 | 否 | 否 |
注意: “安全”:说一个HTTP方法是安全的,是说这是个不会修改服务器的数据的方法。所有安全的方法都是幂等的。
PUT 和POST
方法的区别是,PUT方法是幂等的:连续调用一次或者多次的效果相同(无副作用)。连续调用同一个POST可能会带来额外的影响,比如多次提交订单。
内容来源于MDN。