SpringMVC关于@RequestBody加与不加的区别
SpringMVC关于@RequestBody加与不加的区别
前两天在做项目的时候遇到了这样一个问题,小组成员为了方便做接口测试,给Controller控制器上加了@RequestBody注解,但是前端请求接口时报错:
org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported

为此记录一下关于@RequestBody的相关知识。
先说结论:
使用@RequestBody,用于处理JSON格式的数据,请求的Content-Type的类型为:application/json,请求参数类型为json字符串,格式为 { "id": 1, "name": "knqiufan" };
不使用@RequestBody,处理表单格式的数据,请求的Content-Type类型为:application/x-www-form-urlencoded或multipart/form-data,提交的数据格式为 id=1&name=knqiufan。
所以开头说的前端请求接口报错就是因为前后端的请求参数格式不一致导致的报错。
以下用代码做一些测试。
后台接口:
@GetMapping("test1")
@ApiOperation("测试1")
public ActionResult<Object> test1(@RequestBody SignInModel signInModel) {
return ActionResult.success(signInModel);
}
@GetMapping("test2")
@ApiOperation("测试2")
public ActionResult<Object> test2(SignInModel signInModel) {
return ActionResult.success(signInModel);
}
前端请求(使用的是uniapp的请求方式,默认情况下Content-Type为application/x-www-form-urlencoded:
// 使用表单格式传递
uni.request({
url: "http://127.0.0.1:9000/api/hyHd/ww/app/xcgj/test2",
method: "get",
data: {
ycyy: "cccccc",
bzmGgJcrw: "928j8d782j3",
bzmGgJcrwDy: "kckiwjkngoo"
},
success(res) {
console.log("res", res)
},
fail(e) {
console.error("e", e)
}
})
// 使用json格式传递
uni.request({
url: "http://127.0.0.1:9000/api/hyHd/ww/app/xcgj/test2",
method: "get",
header: {
'Content-Type': 'application/json'
},
data: JSON.stringify({
ycyy: "cccccc",
bzmGgJcrw: "928j8d782j3",
bzmGgJcrwDy: "kckiwjkngoo"
}),
success(res) {
console.log("res", res)
},
fail(e) {
console.error("e", e)
}
})
关于Content-Type的一些知识
Content-Type为application/x-www-form-urlencoded时提交的数据方式是 a=1&b=2这样
Content-Type为application/json时需要以json字符串形式提交:{"a":1, "b":2}
写的稍微有点乱,先为自己记录使用。
SpringMVC关于@RequestBody加与不加的区别的更多相关文章
- 【SpringBoot—注解】@requestBody 与@requestparam;@requestBody的加与不加的区别
一)首先说明xia @requestBody与@requestParam的区别 spring的RequestParam注解接收的参数是来自于requestHeader中,即请求头.都是用来获取请求路径 ...
- href 里面 链接前面加/与不加的区别?(绝对路径与相对路径)
在写href链接时,有绝对路径与相对路径,href 里面 链接前面加/与不加的区别? href="/cp/images/lis.jpg" 相对路径 cp前面/会获取当前路径,组合成 ...
- 网站开发进阶(四十三)html中,路径前加“/” 与不加“/”的区别
网站开发进阶(四十三)html中,路径前加"/" 与不加"/"的区别 前言 <script src="js/downloadify.js&quo ...
- @RequestParam详解以及加与不加的区别
以前写controller层的时候都是默认带上 @RequestParam 的, 今天发现不加@RequestParam 也能接收到参数 下面我们来区分一下加与不加的区别 这里有两种写法 @Reque ...
- @RequestParam加与不加的区别
最简单的两种写法,加或不加@RequestParam注解 @RequestMapping("/list") public String test(int userId) { ret ...
- 路径前面加与不加"/"的区别
加"/"是绝对路径, 不加"/"是相对路径.假设你的这个html文件的路径是www.example.com/path/to/html/a.html,那么src= ...
- js调用函数时括号加与不加的区别,function()&function
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...
- 链接后加"/"与不加"/"的区别
1.http://www.abc.com/abc2.http://www.abc.com/abc/ 当Web服务器接收到对某个末尾不含斜杠的url请求时,例如“http://www.abc.com/a ...
- rediret 加/与不加/的区别
- mybatis @SelectKey加于不加的区别
正常情况下,我们设置表的主键自增,然后: @Insert("insert into miaosha_order (user_id, goods_id, order_id)values(#{u ...
随机推荐
- websocket扫码登录
二维码由web端生成,解析结果 https://www.qycloud.com.cn/home/welcome?{"type":"login","da ...
- java垮平台的原理-垃圾回收-day1
目录 1. 跨平台原理 2. 垃圾回收 3. DOS的几个基本命令 4. PATH环境变量的作用 5 java的安装 6. 第一个java程序 6. 另外两个环境变量CLASS_PATH 与JAVA_ ...
- linux 安装配置 jdk8
转载请注明出处: 1.下载 jdk 在 Linux 环境的安装包.可以在官网下载, 官网连接:https://www.oracle.com/java/technologies/javase/javas ...
- 【MLA】内存泄漏检查
项目地址:skullboyer/MLA (github.com) 介绍 MLA 即 Memory Leak Analyzer,是一个排查内存泄漏的分析器 实现机制是在malloc时记录分配位置信息,在 ...
- 关于《 MultipartFile 的 file.transferTo 》 的坑
错误原因: Controller只能接收一次 MultipartFile的文件, 如果再将接收的 MultipartFile文件 传递给 其他的service , 那么其他的 service 则获取不 ...
- 【转帖】nginx变量使用方法详解-3
https://www.diewufeiyang.com/post/577.html 也有一些内建变量是支持改写的,其中一个例子是 $args. 这个变量在读取时返回当前请求的 URL 参数串(即请求 ...
- 关于sar的学习
关于sar的学习 背景 公司一套基于某冷门Python架构的系统前几天出现异常卡顿. 当时安装的时候必须使用ubuntu系统. 所以当时默认安装的ubuntu1804, 本来想尝试使用一下sar查看卡 ...
- [转帖]kubernetes service 和 kube-proxy详解
https://plantegg.github.io/2020/01/22/kubernetes%20service/ 性能情况.. service 模式 根据创建Service的type类型不同,可 ...
- 如何抓取http请求/拦截器用法
我们都知道postman是模拟接口向服务端发送请求的,在编写请求数据的时候非常 麻烦,那么如果我们可以先抓取该接口后直接使用,就方便的很多 抓取http请求 1.我们打开postman时就会看见右上角 ...
- Java单元测试浅析(JUnit+Mockito)
作者:京东物流 秦彪 1. 什么是单元测试 (1)单元测试环节: 测试过程按照阶段划分分为:单元测试.集成测试.系统测试.验收测试等.相关含义如下: 1) 单元测试: 针对计算机程序模块进 ...