当前位置:   article > 正文

HTTP request : Content-Type_http_request content-type

http_request content-type

Content-Type 与 MediaType 存在对应关系:

Content-Type

  • 客户端发起 HTTP POST/PUT 请求时,可以指定Request Header 的 Content-Type,表示向服务端发送的 Request Body 中的数据的格式
  • 服务端返回数据时,也可以指定Content-Type,表示返回数据的格式

MediaType

服务端接口中设置,表示只接收客户端发送的指定类型的数据,否则报错

在Spring MVC 中,可以通过如下来指定 MediaType,表示该接口只接收 Content-Type 为 JSON 的数据。

@RequestMapping(value = "{bookId}", method = RequestMethod.POST, consume = MediaType.APPLICATION_JSON_VALUE)

常见的Content-Type/MediaType

  • application/atom+xml
  • application/x-www-form-urlencoded
  • application/json
  • application/octet-stream
  • application/xhtml+xml
  • application/xml
  • image/gif
  • image/jpeg
  • image/png
  • multipart/form-data
  • text/html
  • text/plain
  • text/xml

application/x-www-form-urlencoded

query string -- name/value pairs are separated by the ampersand (&), and names are separated from values by the equals symbol (=)

var1=One&var2=Two

multipart/form-data

上传文件时,使用该类型,举个例子:

  1. // request line
  2. POST http://www.example.com HTTP/1.1
  3. // request header
  4. Content-Type:multipart/form-data; boundary=WebKitFormBoundaryrGKCBY7qhFd3TrwA
  5. Content-Length: $requestlen
  6. // request body
  7. --Boundary-----------------------
  8. content-disposition: form-data; name="field1"
  9. value1
  10. --Boundary-----------------------
  11. content-disposition: form-data; name="field2"
  12. value2
  13. --Boundary-----------------------
  14. Content-Disposition: form-data; name="file"; filename="chrome.png"
  15. Content-Type: image/png
  16. Content-Transfer-Encoding: binary
  17. $binarydata
  18. --Boundary-----------------------
  19. Content-Disposition: form-data; name="file1"; filename="a.txt"
  20. Content-Type: text/plain
  21. Content of a.txt.
  22. --Boundary-----------------------
  23. Content-Disposition: form-data; name="file2"; filename="a.html"
  24. Content-Type: text/html
  25. <!DOCTYPE html><title>Content of a.html.</title>
  26. --Boundary-----------------------
  27. Content-Disposition: form-data; name="file3"; filename="binary"
  28. Content-Type: application/octet-streamaωb
  29. $binarydata
  30. --Boundary--
  1. 首先生成了一个 boundary 用于分割不同的字段(该字段可设置的复杂点,以防与正文重复)
  2. 消息主体里按照字段个数又分为多个结构类似的部分,每部分都是以 --boundary开始;每一部份有自己的 MIME headers,如Content-Type、Content-Disposition
  3. 消息主体最后以 --boundary-- 标示结束

application/json

告诉服务端消息主体是序列化后的 JSON 字符串。JSON 格式支持比键值对复杂得多的结构化数据,特别适合 RESTful 的接口。

text/xml

XML-RPC(XML Remote Procedure Call),是一种使用 HTTP 作为传输协议,XML 作为编码方式的远程调用规范。典型的 XML-RPC 请求是这样的:

  1. POST http://www.example.com HTTP/1.1
  2. Content-Type: text/xml
  3. <?xml version="1.0"?>
  4. <methodCall>
  5. <methodName>examples.getStateName</methodName>
  6. <params>
  7. <param>
  8. <value><i4>41</i4></value>
  9. </param>
  10. </params>
  11. </methodCall>

XML 结构还是过于臃肿,一般场景用 JSON 会更灵活方便。

 

 转自https://www.jianshu.com/p/fbd1ba0a7ce7

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/63688
推荐阅读
相关标签
  

闽ICP备14008679号