HTTP请求方法

在软件学院混到大四了,对于http的请求方法还局限于GET,POST,DELETE,PUT四种。其中绝大部份做过的项目只有GET,POST两种,当然也遇到过所有请求全部用POST的奇葩项目。

今天看了《图解HTTP》也对HTTP请求方法有了进一步了解,介于网上好像也没有很好的介绍HTTP请求方法的资料,我在这里记录下~

method description HTTP vision
GET 获取资源 1.0、 1.1
POST 传输实体主体 1.0、 1.1
PUT 传输文件 1.0、 1.1
HEAD 获得报文头部 1.0、 1.1
DELETE 删除文件 1.0、 1.1
OPTIONS 询问支持的方法 1.1
TRACE 追踪路径 1.1
CONNECT 要求用隧道协议链接代理 1.1
LINK 建立和资源之间的联系 1.0
UNLINK 断开链接关系 1.0

HTTP/1.1中可使用的方法

GET方法

GET方法通常用来请求被URI识别的资源,资源经过服务区端解析后返回。比如:你请求了一个网页,它就给你返回个html; 如果你请求了某个搜索,服务器就把搜索结果返回给你。

POST方法

POST方法用来传输实体的主体。

意思就是POST方法是用来向服务器发送内容的。POSTGET很像,GET也可以向服务器传输实体的主体,但是GET主要是用来向服务器获取内容的,而POST不是。

PUT方法

PUT方法用来传输文件,要求在请求主报文的主体中包含文件内容,然后保存在指定位置。

但是由于PUT不带验证机制,任何人都可以上传文件。这样就产生了安全问题,所以一般的网站不用这个方法,除非可以配合Web应用的验证机制(spring security)或架构设计采用REST标准的同类web网站,就可能会开放使用PUT方法。

DELETE方法

DELETE方法与PUT方法相反,用于删除URI指定的资源。

DELETE同样不带有验证机制,所以一般的网站不用这个方法,除非在网站中加入了验证机制。

HEAD方法

HEAD方法用于确认URI的有效性及资源更新时间等,相当于不返回报文主体部分的GET方法。

OPTIONS方法

OPTIONS方法用来查询服务器支持的HTTP方法。

比如你发了个OPTIONS请求给服务器,服务器返回了 GET,POST,PUT,DELETE,说明服务器支持这四种方法。

TRACE方法

TRACE方法是让Web服务器将之前的请求通信环回给客户端的方法。

客户端可以通过TRACE方法查询发送出去的请求是怎样被加工/篡改的。因为,请求想要连接到源目标服务器可能会通过代理中转,TRACE方法就是用来确认链接过程中发生的一系列操作。

(这个方法一般不用)

CONNECT方法

CONNECT方法要求在与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信。主要是用SSL和TLS协议把通信内容加密后经网络隧道传输。


URI和URL

URI:(Uniform Resource Identifier)

URL: (Uniform Resource Loccator)

相比起URI,我们更熟悉URL。每次我们访问网页需要在浏览器中输入的网址就是URL。

URI用字符串标示某一互联网资源,而URL表示资源地点。所以URLURI的子集,但是也可以认为URL就是URI。。

什么是REST标准?

REST(Representational State Transfer)描述了一个架构样式的网络系统,比如 web 应用程序。REST并没有一个明确的标准,而更像是一种设计的风格。
所以REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。

资源是由URI来指定。
对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。
通过操作资源的表形来操作资源。

参考资料:
上野宣. 图解HTTP[M]. 人民邮电出版社, 2014.
http://www.cnblogs.com/taven/archive/2009/09/06/1561358.html