标准Http协议支持六种请求方法,即:
0,GET
1,HEAD
2,PUT
3,DELETE
4,POST
5,OPTIONS
6,TRACE
GET 请求获取由Request-URI所标识的资源。
POST 在Request-URI所标识的资源后附加新的数据。
HEAD 请求获取由Request-URI所标识的资源的响应消息报头。
OPTIONS 请求查询服务器的性能,或查询与资源相关的选项和需求。
PUT 请求服务器存储一个资源,并用Request-URI作为其标识。
DELETE 请求服务器删除由Request-URI所标识的资源。
TRACE 请求服务器回送收到的请求信息,主要用语测试或诊断。
0,GET:GET可以说是最常见的了,它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。GET请求中,永远不会包含呈现数据。
1,HEAD:HEAD和GET本质是一样的,区别在于HEAD不含有呈现数据,而仅仅是HTTP头信息。有的人可能觉得这个方法没什么用,其实不是这样的。想象一个业务情景:欲判断某个资源是否存在,我们通常使用GET,但这里用HEAD则意义更加明确。
2,PUT:这个方法比较少见。HTML表单也不支持这个。本质上来讲, PUT和POST极为相似,都是向服务器发送数据,但它们之间有一个重要区别,PUT通常指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器自己决定。举个例子:如一个用于提交博文的URL,/addBlog。如果用PUT,则提交的URL会是像这样的”/addBlog/abc123”,其中abc123就是这个博文的地址。而如果用POST,则这个地址会在提交后由服务器告知客户端。目前大部分博客都是这样的。显然,PUT和POST用途是不一样的。具体用哪个还取决于当前的业务场景。
3,DELETE:删除某一个资源。基本上这个也很少见,不过还是有一些地方比如amazon的S3云服务里面就用的这个方法来删除资源。
4,POST:向服务器提交数据。这个方法用途广泛,几乎目前所有的提交操作都是靠这个完成。
5,OPTIONS:这个方法很有趣,但极少使用。它用于获取当前URL所支持的方法。若请求成功,则它会在HTTP头中包含一个名为“Allow”的头,值是所支持的方法,如“GET, POST”。
二. get和post的区别
(1)使用范围的区别:
使用GET时,form中的数据集(如input框的value)将被编码到URL中,作为URL的一部分。而使用POST时,form中的数据集则被编码到http协议的header中,构造成消息发送。在使用上,当且仅当请求是幂等(请求任意次都返回同样的结果)时使用GET,而当请求会改变服务器数据或状态时使用POST。当程序设计人员正确的使用GET,POST时,浏览器会给出更好的缓存配合,使响应速度更快。
(2)在form提交阶段的差别:
form提交的第一步是创建数据集,并根据 ENCTYPE 指定的类型值对数据集进行编码。 ENCTYPE 有两个值:multipart/form-data,application/x-www-form-urlencoded(默认值)。form提交的第二步是进行数据传输。对于GET方法,数据集使用application/x-www-form-urlencoded编码;而对于POST方法,数据集的 ENCTYPE 可以指定。