几种常见的contentType类型

1、application/x-www-form-urlencoded

浏览器的原生<form> 表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据。 对应postman中的x-www-form-urlencoded

1
2
3
4
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
1
2
3
decodeURI('title=test&sub%5B%5D=1&sub%5B%5D=2&sub%5B%5D=3')
// "title=test&sub[]=1&sub[]=2&sub[]=3"
// sub:[1,2,3]

注:提交的数据按照 key1=val1&key2=val2 的方式进行编码,keyval都进行了URL转码


2、multipart/form-data

常见的 POST 数据提交的方式。我们使用表单上传文件时,必须让 formenctype 等于这个值。对应postman中的form-data

1
2
3
4
5
<form action="/" method="post" enctype="multipart/form-data">
<input type="text" name="description" value="some text">
<input type="file" name="myFile">
<button type="submit">Submit</button>
</form>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
POST /foo HTTP/1.1
Content-Length: 68137
Content-Type: multipart/form-data; boundary=---------------------------974767299852498929531610575

---------------------------974767299852498929531610575
Content-Disposition: form-data; name="description"

some text
---------------------------974767299852498929531610575
Content-Disposition: form-data; name="myFile"; filename="foo.txt"
Content-Type: text/plain

(content of the uploaded file foo.txt)
---------------------------974767299852498929531610575--


3、application/json

消息主体是序列化后的 JSON 字符串,这个类型越来越多地被大家所使用 。对应postman中的json

1
2
3
4
POST [http://www.example.com](http://www.example.com) HTTP/1.1 
Content-Type: application/json;charset=utf-8

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

方便的提交复杂的结构化数据,特别适合 RESTful 的接口


4、text/xml

是一种使用HTTP 作为传输协议,XML 作为编码方式的远程调用规范 。对应postman中的xml

1
2
3
4
5
6
7
8
9
10
POST [http://www.example.com](http://www.example.com) HTTP/1.1 
Content-Type: text/xml
<!--?xml version="1.0"?-->
<methodcall>
<methodname>examples.getStateName</methodname>
<params>
<param>
<value><i4>41</i4></value>
</params>
</methodcall>