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 ...
随机推荐
- MES系统初探(一)
什么是MES系统 MES系统是制造执行系统(Manufacturing Execution System)的缩写,是一种用于监控.控制和优化制造过程的软件系统.它主要负责协调生产计划.生产调度.生产执 ...
- java进阶(24)--ArrayList集合、LinkList集合、Vector集合
一.基础 1.ArrayList集合底层是Object[]数组 2.默认容量10(优先:Add第一个元素,初始化未0,jdk13) 3.构造方法:无参(默认).有参 4.ArrayList集合扩容比例 ...
- 【Git】Git与Repo入门
[来源]https://www.cnblogs.com/angeldevil/archive/2013/11/26/3238470.html
- [转帖]实践真知:解决 Jdbc 连接 Oracle 12c 时快时慢的问题
https://cloud.tencent.com/developer/article/1052506 李真旭@killdb Oracle ACE,云和恩墨技术专家 个人博客:www.killdb.c ...
- [转帖]Always-on Profiling for Production Systems
https://0x.tools/ 0x.tools (GitHub) is a set of open-source utilities for analyzing application perf ...
- [转帖]MioIO读/写性能测试
https://www.jianshu.com/p/a0a84f91b16f image.png COSBench是Intel团队基于java开发,是一个测试云对象存储系统的分布式基准测试工具,全 ...
- [转帖]一文带你搞懂xxl-job(分布式任务调度平台)
https://zhuanlan.zhihu.com/p/625060354 前言 本篇文章主要记录项目中遇到的 xxl-job 的实战,希望能通过这篇文章告诉读者们什么是 xxl-job 以及怎么使 ...
- [转帖]《Linux性能优化实战》笔记(22)—— 网络丢包问题分析
所谓丢包,是指在网络数据的收发过程中,由于种种原因,数据包还没传输到应用程序中,就被丢弃了.这些被丢弃包的数量,除以总的传输包数,也就是我们常说的丢包率.丢包率是网络性能中最核心的指标之一.丢包通常会 ...
- Docker镜像精简方法之二 COPY vs ADD 与镜像层
Docker镜像精简方法之二 COPY vs ADD 与镜像层 摘要 昨天只是讲了一下大体的思路. 但是没有实操. 今天想着修改一下默认的打包镜像的命令,验证一下效果 原始命令 FROM adopto ...
- [转帖]xsos - Summarize system info from sosreports
https://github.com/ryran/rsar I'M LOOKING FOR RSAR SCREEN SHOTS INTRO INSTALLATION EXAMPLES IN ACTIO ...