使用与不使用@RequestBody注解的区别
1. 如果使用@RequestBody接受页面参数: public Map<String,Object> insertBudget(@ApiParam(required = true,name = "actBudgetCost",value = "预算")@RequestBody ActBudgetCost actBudgetCost, HttpServletRequest request){}那么前台页面ajax应该这样写: $.ajax({url: '',type: "POST",data: JSON.stringify({"actiName":name}),dataType: "json",contentType: "application/json",async: false,success: function (result) {},error: function (xhr, ajaxOptions, thrownError) {//console.log(thrownError); //alert any HTTP error//alert("请求出错!");return false;}});2. 如果不使用@RequestBody接受页面参数: public Map<String, Object> regProduct(HttpServletRequest request,@ApiParam(name = "customerProAuditPO", value = "产品注册实体")CustomerProAuditVO customerProAuditVO) {}那么前台页面ajax应该这样写: var data = {customerName:customerName, }; $.ajax({url:'',type: "POST",data: data, //async: false,dataType:"json",success: function(result) {var json = result;},error: function (xhr, ajaxOptions, thrownError) {console.log(thrownError);return false;}}); 复制代码
一、问题描述
由于项目是前后端分离,因此后台使用的是spring boot,做成微服务,只暴露接口。接口设计风格为restful的风格,在get请求下,后台接收参数的注解为RequestBody时会报错;在post请求下,后台接收参数的注解为RequestParam时也会报错。
二、问题原因
由于spring的RequestParam注解接收的参数是来自于requestHeader中,即请求头,也就是在url中,格式为xxx?username=123&password=456,而RequestBody注解接收的参数则是来自于requestBody中,即请求体中。
三、解决方法
因此综上所述,如果为get请求时,后台接收参数的注解应该为RequestParam,如果为post请求时,则后台接收参数的注解就是为RequestBody。附上两个例子,截图如下:
get请求
post请求
另外,还有一种应用场景,接口规范为resultful风格时,举个例子:如果要获取某个id下此条问题答案的查询次数的话,则后台就需要动态获取参数,其注解为@PathVariable,并且requestMapping中的value应为value="/{id}/queryNum",截图如下:
转载于:https://www.cnblogs.com/linjiaxin/p/9297833.html
使用与不使用@RequestBody注解的区别相关推荐
- 详述@ResponseBody和@RequestBody注解的区别
2019独角兽企业重金招聘Python工程师标准>>> 1 前言 在详述 @ResponseBody 和 @RequestBody 注解之前,咱先了解一下 @RequestMappi ...
- @RequestBody注解失效?从前端传来的数据到底需不需要@RequestBody注解?前端传输数据解析的问题?
@RequestBody注解失效?从前端传来的数据到底需不需要@RequestBody注解? 又是在日常的从Mybatis升级Mybatis-Plus的过程中,我又发现了问题:怎么从前端传来的数据没有 ...
- @RestController和@Controller注解的区别
2019独角兽企业重金招聘Python工程师标准>>> @RestController和@Controller是我们在前端控制层用在类上面的一个注解,这个我们大家都很熟悉. @Res ...
- 在SpringMVC中使用@RequestBody注解处理json时,报出HTTP Status 415的解决方案
在SpringMVC中使用@RequestBody注解处理json时,报出HTTP Status 415的解决方案 参考文章: (1)在SpringMVC中使用@RequestBody注解处理json ...
- @RequestBody注解分析
@RequestBody注解风析 get和post GET可以拥有请求体,RFC 文档中从来就没有说过 GET 没有请求体.RFC 只是说GET 意味着通过 URI 来识别资源.所以GET请求体中的数 ...
- spring里面 @Controller和@RestController注解的区别
问题:spring里面 @Controller和@RestController注解的区别 spring里面 @Controller和@RestController注解的区别 Web MVC和REST ...
- lombok 的bug?lombok 导致 springmvc 使用 @RequestBody注解 接收 json数据 对象参数绑定失败
大家好,我是烤鸭: lombok 导致 springmvc 使用 @RequestBody注解 接收 json数据 对象参数绑定失败. 环境版本: spring 5.x ...
- MongoDB:SpringBoot有关@Document(collection = )与@Document(collation= )注解的区别
目录 QUESTION:SpringBoot有关@Document(collection = "")与@Document(collation= "")注解的区别 ...
- @PathVariable、@RequestParam、@RequestBody注解
讲解更加详细的参考资料 https://blog.csdn.net/u011410529/article/details/66974974 https://www.cnblogs.com/soul-w ...
最新文章
- vim 打开Linux下文件每一行后面都有^M的样式
- 无线充电系统的功率与效率
- 跳石头 NOIP2015 提高组 Day2 T1
- python爬虫知识点总结(十三)使用代理处理反扒抓取微信文章
- android系统release签名
- mysql分区跨机器_(转) mysql的分区技术 .
- c语言程序员写贪吃蛇代码28,厉害了,程序员28行代码写贪吃蛇游戏,附源码!...
- ubuntu重置面板
- React学习笔记(持续更新)
- AtCoder-2379 - 连接竹竿 思维 | 数学
- 使用pytorch自定义DataSet,以加载图像数据集为例,实现一些骚操作
- java integer常量池_为什么Integer常量池的行为在127发生变化?
- icesat-2 数据产品
- 如何理解最小二乘法?
- ROSBridge - ROS系统与非ROS外部系统的通信的C++客户端实现
- 《计算机网络(第七版)谢希仁 编著》第一章内容总结及部分解题
- JDK1.8版本linux、Windows64下载
- ultraedit编译java_在UltraEdit中编译和运行Java程序
- 离散数学--Chap14 图
- 从基础到进阶,一文详解RocketMQ事务消息,看完不会跪键盘
热门文章
- Idea运行报错Error running ‘Application‘: Command line is too long的解决方法
- HashMap遍历方式
- 网络基础知识:FTP命令及应答码
- 【编译器】VSCode配置Go语言开发环境
- 如何画正太分布曲线_python scipy.stats实现各种常见的统计分布
- java歌词高亮显示滚动_js如何处理音乐播放器的歌词文件达到高亮以及滚动的效果?...
- SQL Sever 数据完整性
- css设置按钮竖直方向居中_button内flex垂直居中竟然不居中的解决
- 穿上马甲就没认出polya定理之典型题目手环
- java设置小数位数_java设置小数点后位数