Http

Published: by Creative Commons Licence

  • Tags:

方法Method

HTTP支持多种请求方法,这些请求方法声明对URL指定的资源执行的操作。

方法 描述
GET GET方法请求一个指定资源的表示形式,使用GET的请求应该只被用于获取数据。
HEAD HEAD方法请求一个与GET请求的响应相同的响应,但没有响应体.。
POST POST方法用于将实体提交到指定的资源,通常导致状态或服务器上的副作用的更改。
PUT PUT方法用请求有效载荷替换目标资源的所有当前表示。
DELETE DELETE方法删除指定的资源。
CONNECT CONNECT方法建立一个到由目标资源标识的服务器的隧道。
OPTIONS OPTIONS方法用于描述目标资源的通信选项。
TRACE TRACE方法沿着到目标资源的路径执行一个消息环回测试。
PATCH PATCH方法用于对资源应用部分修改。

内容类型Content-Type

Content-Type用于定义HTTP数据的格式和类型。对于浏览器客户端,会按照服务器返回的Content-Type决定如何渲染返回的数据。而对于服务端则会根据客户端请求头中的Content-Type决定如何解析数据。

application/x-www-form-urlencoded

application/x-www-form-urlencoded是浏览器提交表单的默认格式,它的请求类似于:

POST http://www.example.com HTTP/1.1
Content-Type: application/x-www-form-urlencoded;charset=utf-8

title=test&sub%5B%5D=1&sub%5B%5D=2&sub%5B%5D=3

这里出现一些形如sub%5B%5D的奇怪字符的原因是key和value都会进行URL编码,只需要在服务器端对应解码即可还原数据。

multipart/form-data

我们使用表单上传文件时,必须设置表单的enctype为multipart/form-data。

POST http://www.example.com HTTP/1.1
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryrGKCBY7qhFd3TrwA

------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="text"

title
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="file"; filename="chrome.png"
Content-Type: image/png

PNG ... content of chrome.png ...
------WebKitFormBoundaryrGKCBY7qhFd3TrwA--

在multipart/form-data中,会定义一个很长的boundary,用于分隔字段(之所以要很长,是为了和数据不冲突,避免错误解析)。消息的每个字段都以--boundary开始,以--boundary--结束。

application/json

JSON的表达能力要比普通的一组字段集合要强的多,因此JSON格式的数据也是一种非常流行的HTTP的内容类型。

POST http://www.example.com HTTP/1.1 
Content-Type: application/json;charset=utf-8

{"title":"test","sub":[1,2,3]}

附录

参考