Http协议-Content-Type

2020-04-18  本文已影响0人  张明学

http协议是建立在tcp/ip协议之上的应用层协议,主要包括三个部分,状态行,头部信息,消息体。对应一个http请求就是:请求行,请求头,请求体。

协议规定post提交的数据必须包含在消息主体中entity-body中,但是协议并没有规定数据使用什么编码方式。开发者可以自己决定消息主体的格式。
最常用的是:application/x-www-form-urlencoded、multipart/form-data、application/json

application/x-www-form-urlencoded


application/x-www-form-urlencoded是最常见的传统表单提交方式,不支持附件。只是数据按照key=&value=的方式放在请求体中,也会对数据进行urlencoded编码。
示例:

Request Headers
User-Agent: PostmanRuntime/7.24.0
Accept: */*
Cache-Control: no-cache
Host: 127.0.0.1:8080
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 38

Request Body
userName: "张三"
userAge: "18"

详细报文体如下:

userName=%E5%BC%A0%E4%B8%89&userAge=18

multipart/form-data


multipart/form-data是常用的附件上传的请求方式,由于可以在请求体中放普通的参数,也可以放附件数据,因此,该请求方式特点是在请求头中会指定普通的key、value和附件key,value的分隔符。可以有很多个,分别分隔开。

Request Headers
User-Agent: PostmanRuntime/7.24.0
Accept: */*
Cache-Control: no-cache
Host: 127.0.0.1:8080
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Content-Type: multipart/form-data; boundary=--------------------------193199529493545754609258
Content-Length: 277

Request Body
userName: "张三"
userAge: "18"

boundary就行数据分隔符,详细请求体如下:

----------------------------193199529493545754609258
Content-Disposition: form-data; name="userName"

张三
----------------------------193199529493545754609258
Content-Disposition: form-data; name="userAge"

18
----------------------------193199529493545754609258--

application/json


现在越来越多的应用使用application/json,用来告诉服务端消息主体(报文体)是序列化的json字符串。服务端接收解析起来也比较方便,SpringMVC,SpringBoot都已经支持。
示例:

Request Headers
Content-Type: application/json
User-Agent: PostmanRuntime/7.24.0
Accept: */*
Cache-Control: no-cache
Host: 127.0.0.1:8080
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Content-Length: 36

Request Body
userName: "张三"
userAge: "18"

详细请求体:

{"userName":"张三","userAge":"18"}

application/xml与application/json类似,就是Content-Type:application/xml,请求体放的是xml格式的数据。

  1. form-data:就是http请求中的multipart/form-data
  2. x-www-form-urlencoded:对应的Content-Type=application/x-www-form-urlencode
  3. raw:对应的Content-Type=application/json、Content-Type=application/text、Content-Type=application/xml,也可能可以上传任意格式的文本如:text、json、xml、html等
上一篇下一篇

猜你喜欢

热点阅读