多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] # 方法 * GET: 通常用于请求服务器发送某些资源 * HEAD: 请求资源的头部信息, 并且这些头部与 HTTP GET 方法请求时返回的一致. 该请求方法的一个使用场景是在下载一个大文件前先获取其大小再决定是否要下载, 以此可以节约带宽资源 * OPTIONS: 用于获取目的资源所支持的通信选项 * POST: 发送数据给服务器 * PUT: 用于新增资源或者使用请求中的有效负载替换目标资源的表现形式 * DELETE: 用于删除指定的资源 * PATCH: 用于对资源进行部分修改 * CONNECT: HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器 * TRACE: 回显服务器收到的请求,主要用于测试或诊断 <br> # GET和POST的区别 ![](https://box.kancloud.cn/ce90cd8059d1ec9bde5182e7a7734f27_809x470.png) * 数据传输方式不同:GET请求通过URL传输数据,而POST的数据通过请求体传输。 * 安全性不同:POST的数据因为在请求主体内,所以有一定的安全性保证,而GET的数据在URL中,通过历史记录,缓存很容易查到数据信息。 * 数据类型不同:GET只允许 ASCII 字符,而POST无限制 * GET无害: 刷新、后退等浏览器操作GET请求是无害的,POST可能重复提交表单 * 特性不同:GET是安全(这里的安全是指只读特性,就是使用这个方法不会引起服务器状态变化)且幂等(幂等的概念是指同一个请求方法执行多次和仅执行一次的效果完全相同),而POST是非安全非幂等 <br> # PUT和POST都是给服务器发送新增资源,有什么区别? PUT 和POST方法的区别是,PUT方法是幂等的:连续调用一次或者多次的效果相同(无副作用),而POST方法是非幂等的。 <br> 除此之外还有一个区别,通常情况下,PUT的URI指向是具体单一资源,而POST可以指向资源集合。 <br> 举个例子,我们在开发一个博客系统,当我们要创建一篇文章的时候往往用`POST https://www.jianshu.com/articles`,这个请求的语义是,在articles的资源集合下创建一篇新的文章,如果我们多次提交这个请求会创建多个文章,这是非幂等的。 <br> 而`PUT https://www.jianshu.com/articles/820357430`的语义是更新对应文章下的资源(比如修改作者名称等),这个URI指向的就是单一资源,而且是幂等的,比如你把『刘德华』修改成『蔡徐坤』,提交多少次都是修改成『蔡徐坤』 <br> > ps: 『POST表示创建资源,PUT表示更新资源』这种说法是错误的,两个都能创建资源,根本区别就在于幂等性 <br> # PUT和PATCH都是给服务器发送修改资源,有什么区别? PUT和PATCH都是更新资源,而PATCH用来对已知资源进行局部更新。 <br> 比如我们有一篇文章的地址`https://www.jianshu.com/articles/820357430`,这篇文章的可以表示为: ~~~ article = { author: 'dxy', creationDate: '2019-6-12', content: '我写文章像蔡徐坤', id: 820357430 } 复制代码 ~~~ <br> 当我们要修改文章的作者时,我们可以直接发送`PUT https://www.jianshu.com/articles/820357430`,这个时候的数据应该是: ~~~ { author:'蔡徐坤', creationDate: '2019-6-12', content: '我写文章像蔡徐坤', id: 820357430 } 复制代码 ~~~ <br> 这种直接覆盖资源的修改方式应该用put,但是你觉得每次都带有这么多无用的信息,那么可以发送`PATCH https://www.jianshu.com/articles/820357430`,这个时候只需要: ~~~ { author:'蔡徐坤', } ~~~