请求方法 | 作用 |
---|---|
GET | 通常用于请求服务器发送某些资源 |
HEAD | 请求资源的头部信息, 并且这些头部与 HTTP GET 方法请求时返回的一致. 该请求方法的一个使用场景是在下载一个大文件前先获取其大小再决定是否要下载, 以此可以节约带宽资源 |
OPTIONS | 用于获取目的资源所支持的通信选项 |
POST | 发送数据给服务器 |
PUT | 用于新增资源或者使用请求中的有效负载替换目标资源的表现形式 |
DELETE | 用于删除指定的资源 |
PATCH | 用于对资源进行部分修改 |
CONNECT | HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器 |
TRACE | 回显服务器收到的请求,主要用于测试或诊断 |
GET 和 POST 有什么区别?
角度 | 描述 |
---|---|
缓存 | GET 请求会被浏览器主动缓存下来,留下历史记录,而 POST 默认不会。 |
编码 | GET 只能进行 URL 编码,只能接收 ASCII 字符,而 POST 没有限制。 |
参数 | GET 一般放在 URL 中,因此不安全,POST 放在请求体中,更适合传输敏感信息。 |
幂等性 | GET 是幂等的,而 POST 不是。 |
什么是幂等?
幂等的概念是指同一个请求方法执行多次和仅执行一次的效果完全相同。
比如 get 获取资源,get 几次都不会服务器都不会发生变化,而 POST 上传数据,会新增资源。
- 按照 RFC 里的语义,POST 是“新增或提交数据”,多次提交数据会创建多个资源,所以不是幂等的;
- 而 PUT 是“替换或更新数据”,多次更新一个资源,资源还是会第一次更新的状态,所以是幂等的。
PUT 和 POST 都是给服务器发送新增资源,有什么区别?
PUT 和 POST 方法的区别是,PUT 方法是幂等的:连续调用一次或者多次的效果相同(无副作用),而 POST 方法是非幂等的。
『POST 表示创建资源,PUT 表示更新资源』这种说法是错误的,两个都能创建资源,根本区别就在于幂等性
PUT 和 PATCH 都是给服务器发送修改资源,有什么区别?
PUT 和 PATCH 都是更新资源,而 PATCH 用来对已知资源进行局部更新。
比如我们修改个人信息
json
{
"name": "alvin",
"age": 18
}
我们要修改年龄时
json
// 使用 PUT 覆盖资源
{
name: 'alvin',
age: 20
}
// 使用 PATCH 局部更新
{ age: 20 }