详解 POST 请求中的 Content-Type 配置,application/x-www-form-urlencoded 和 application/json

最近发生了一件怪异的事情。在一个前后端分离的项目中,有人把后端的接口编写好了,然后使用 postman 去测试,总是获取不到 POST 请求中的参数。这其中的原因就是和 Content-Type 类型的值有关。

Content-Type 对应的值,其实就是 MIME。有非常多的值,这个我们还可以在 Tomcat、Nginx 等当中进行配置。

场景的 Content-Type 的值如下:

  • application/x-www-form-urlencoded:默认的 encType,当 form 表单请求为 get 时,数据被编码为 key/value 格式(name1=value1&name2=value2…),然后把这个字串 append 到 url 后面,用 ? 分割,加载这个新的 url 发送到服务器(表单默认的提交数据的格式);当请求为 post 时,浏览器把 form 数据封装到 http body 中,然后发送到 server。(form 的 enctype 属性为编码方式,常用有两种:application/x-www-form-urlencoded 和 multipart/form-data,默认为 application/x-www-form-urlencoded。)
  • multipart/form-data:需要在表单中进行文件上传时,就需要使用该格式
    application/json:application/json 这个 Content-Type 作为响应头大家肯定不陌生。实际上,现在越来越多的人把它作为请求头,用来告诉服务端消息主体是序列化后的 JSON 字符串
  • text/xml:它是一种使用 HTTP 作为传输协议,XML 作为编码方式的远程调用规范
  • application/xhtml+xml:XHTML格式
  • application/xml:XML数据格式
  • application/atom+xml:Atom XML聚合格式
  • application/json:JSON数据格式
  • application/pdf:pdf格式
  • application/msword:Word文档格式
  • application/octet-stream:二进制流数据(如常见的文件下载)
  • text/html:HTML格式
  • text/plain:纯文本格式
  • image/gif:gif图片格式
  • image/jpeg:jpg图片格式
  • image/png:png图片格式

我们这位开发人员使用 swagger 进行请求是可以取到参数的。但是使用 Postman 之后,发现无法获取到参数了。

最后我帮忙排查,发现 swagger 中,默认使用的是 application/x-www-form-urlencoded。

而他的 Postman 中,默认配置的是 application/json。需要注意的是,使用 application/json 这种 Content-Type 类型。再使用 @RequestParam 就会取不到值。

详解 POST 请求中的 Content-Type 配置,application/x-www-form-urlencoded 和 application/json

: » 详解 POST 请求中的 Content-Type 配置,application/x-www-form-urlencoded 和 application/json

原创文章,作者:506227337,如若转载,请注明出处:https://blog.ytso.com/252730.html

(0)
上一篇 2022年5月4日
下一篇 2022年5月4日

相关推荐

发表回复

登录后才能评论