《知识点扫盲 · 请求类型 ContentType》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗
🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数,欢迎多多交流。👍

CSDN.gif

写在前面的话

Content-Type是HTTP头部的一部分,用于指示发送到HTTP请求或响应中的数据的格式和类型。在 SpringMVC 开发中,当处理HTTP请求时,Content-Type 非常重要,因为它告诉Spring如何解析请求体中的数据,以及如何设置响应的格式。
举个例子,打开谷歌浏览器,按F12打开开发者工具,此时访问某网站,可以在开发者工具查找接口调用情况。如下所示,查看任意请求,基本都可以看到请求头和响应头包含 Content-Type
先关注一下请求头的Content-Type,客户端发送请求的请求头里面的 Content-Type 告诉服务提供方如何解析和处理请求或响应中的数据,不同的 Content-Type 值对应不同的数据格式,服务器和客户端可以根据这个信息进行相应的处理。
image.png
本篇博文主要介绍一下 SpringMVC 开发中,针对客户端发起的不同请求类型,后端控制器参数部分应当如何处理。


常见的 Content-Type 接收

在 Spring MVC 开发中,常见的 Content-Type 值及其对应的接收方式如下:

application/json

**类型描述:**表示请求体是 JSON 格式的数据。
**接收方式:**使用 @RequestBody 注解来接收 JSON 数据,Spring 会自动将 JSON 转换为 Java 对象。
**参考源码:**RequestResponseBodyMethodProcessor
**补充说明:**日常开发中,这种方式应该使用较多。

@PostMapping(value = "/api/user", consumes = "application/json")
public ResponseEntity<User> createUser(@RequestBody User user) {
   
   
    
}

application/x-www-form-urlencoded

**类型描述:**表示请求体是表单数据,通常用于表单提交,如果在 HTTP 请求中没有显式设置 Content-Type,那么默认的 Content-Type 通常是此种格式。
**接收方式:**使用 @RequestParam 注解来接收单个参数,本质是 request.getParameterValues。
**使用场景:**这种格式通常用于 HTML 表单的提交,适合简单的数据传输。
**数据格式:**在这种格式下,表单数据会被编码为键值对的形式,多个键值对之间用 & 符号连接,键和值之间用 = 符号分隔。例如:name=John&age=30&city=NewYork
**参考源码:**RequestParamMethodArgumentResolver

@PostMapping(value = "/api/user", consumes = "application/x-www-form-urlencoded")
public ResponseEntity<User> createUser(@RequestParam String userName) {
   
   
}

Tips:也可以使用 @ModelAttribute 注解来接收整个表单数据并映射到 Java 对象。

multipart/form-data

**类型描述:**表示请求体包含文件上传和表单数据。用于文件上传场景,可以上传文件和其他表单数据。
**接收方式:**使用 MultipartFile 类型来接收上传的文件。


                
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

战神刘玉栋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值