美文网首页
Http协议-Content-Type

Http协议-Content-Type

作者: 张明学 | 来源:发表于2020-04-18 12:01 被阅读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格式的数据。

    • 另外介绍一下PostMan中:form-data、x-www-form-urlencoded、raw、binary。(PostMan是用得比较多一款http请求工具)
    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等

    相关文章

      网友评论

          本文标题:Http协议-Content-Type

          本文链接:https://www.haomeiwen.com/subject/nwrvvhtx.html