提到HTTP请求方法,想必大家都很熟悉GET和POST了,其实HTTP的请求方法还有很多:PUT,DELETE,CONNECT,OPTIONS,PATCH,HEAD。下面我们将通过一些例子对这些方法的用法进行简单介绍: 这样是不是很容易理解了,细心你会发现:PUT和PATCH都是可以用来修改的,它们没有其他不同的地方吗?接下来我们就去更深层的解读一下这些方法的用法:
在介绍这些方法之前我们先来了解两个关键词: 安全:安全的方法就是不会改变服务器的状态(数据),也就是说它仅仅是获取资源信息,就像数据库查询一样,只读取不修改。 幂等:幂等是指同样的请求被执行了一次与连续执行多次的效果是一样的(即没有副作用),服务状态也是一样的。比如说:GET方法多次去服务器请求数据,不会对服务器数据有影响,这就是幂等的,POST方法多次提交数据,每提交一次,服务器会接收一条新数据并且去处理,这就不是幂等的;
了解了安全和幂等,我们会更容易理解其他HTTP方法的作用和用法: GET
通过GET的方法获取数据,Preview中的内容是获取的数据:
GET方法是安全且幂等的。
POST
通过POST的方法保存提交新创建的“预约时间”数据
"Request Payload" 中的内容是咱们要提交的数据
PUT
请求会身向指定资源位置上传其最新内容,通过该方法客户端可以将指定资源的最新数据 传送给服务器取代指定的资源的内容,也就是在已有的数据上进行编辑,然后保存提交。
编辑“预约时间”后保存提交:PUT 与 POST 方法等区别在于,PUT方法是幂等的方法。
DELETE
DELETE方法用于删除指定的资源。
如果DELETE方法成功执行,那么可能会有以下几种状态码:
状态码 202(Accepted)表示请求的操作可能会成功执行,但是尚未开始执行。 状态码 204 (No Content)表示操作已执行,但是无法进一步的相关信息。 状态码 200(OK)表示操作已经执行,并且响应中提供了相关状态的描述信息。
CONNECT
在HTTP协议中,CONNECT方法可以开启一个客户端与所请求资源之间的双向沟通的通道。它可以用来创建隧道(tunnel)。
CONNECT这个方法的作用就是把服务器作为跳板,让服务器代替用户去访问其它网页,之后把数据原原本本的返回给用户。这样用户就可以访问到一些只有服务器上才能访问到的网站了
OPTIONS
OPTIONS请求旨在发送一种“探测”请求以确定针对某个目标地址的请求必须具有怎样的约束(比如应该采用怎样的HTTP方法以及自定义的请求报头),然后根据其约束发送真正的请求。比如针对“跨域资源”的预检(Preflight)请求采用的HTTP方法就是OPTIONS。
OPTIONS请求方法的主要用途有两个:
1、获取服务器支持的HTTP请求方法;也是黑客经常使用的方法。
2、用来检查服务器的性能。例如:AJAX进行跨域请求时的预检,需要向另外一个域名的资源发送一个HTTP OPTIONS请求头,用以判断实际发送的请求是否安全。
PATCH
PATCH 用于资源的部分内容的修改更新,是不是跟PUT有点儿像,都是修改数据,其实它俩还是有很多区别的:
PATCH 用于资源的部分内容的修改更新,例如更新某一个字段。具体比如说只更新用户信息的电话号码字段
而 PUT 用于更新某个资源较完整的内容,比如说用户要重填完整表单更新所有信息,后台处理更新时可能只是保留内部记录 ID 不变。
联想到版本控制 PATCH 是修改原来的内容,也可能会产生一个新的版本。比如当资源不存在的时候,PATCH 可能会去创建一个新的资源,这个意义上像是 saveOrUpdate 操作。
PUT 只对已有资源进行更新操作,所以是 update 操作HEAD
HEAD方法与GET方法一样,都是向服务器发出指定资源的请求。但是,服务器在响应HEAD请求时不会回传资源的内容部分,即:响应主体。这样,我们可以不传输全部内容的情况下,就可以获取服务器的响应头信息。HEAD方法常被用于客户端查看服务器的性能。
该请求方法等一个使用场景是在下载一个大文件前先获取其大小再决定是否要下载,以此可以节约宽带资源。
总结 下面的表格列出了HTTP 请求方法的简要说明:
服务向用户返回的状态码和提示信息,常见的有以下这些(方括号中是该状态码对应的HTTP动词)。
推荐 最后给大家推荐一个Http请求模拟工具:Postman
Postman是一种网页调试与发送网页http请求的chrome插件,我们可以用来很方便的模拟get或者post或者其他方式的请求来调试接口,Postman小编也在学习中,欢迎填了坑的同学留言交流,谢谢。
Postman用法简介 (http://blog.csdn.net/flowerspring/article/details/52774399)
摘抄文献 http://www.cnblogs.com/ID890/p/http.html http://www.restapitutorial.com/lessons/httpmethods.html https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods http://www.w3school.com.cn/tags/htmlref httpmethods.asp http://blog.csdn.net/leikezhu1981/article/details/7402272 http://blog.lucode.net/protocol/http-method-tutorial.html https://unmi.cc/restful-http-patch-method/ https://segmentfault.com/q/1010000005685904/