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注解的区别相关推荐

  1. 详述@ResponseBody和@RequestBody注解的区别

    2019独角兽企业重金招聘Python工程师标准>>> 1 前言 在详述 @ResponseBody 和 @RequestBody 注解之前,咱先了解一下 @RequestMappi ...

  2. @RequestBody注解失效?从前端传来的数据到底需不需要@RequestBody注解?前端传输数据解析的问题?

    @RequestBody注解失效?从前端传来的数据到底需不需要@RequestBody注解? 又是在日常的从Mybatis升级Mybatis-Plus的过程中,我又发现了问题:怎么从前端传来的数据没有 ...

  3. @RestController和@Controller注解的区别

    2019独角兽企业重金招聘Python工程师标准>>> @RestController和@Controller是我们在前端控制层用在类上面的一个注解,这个我们大家都很熟悉. @Res ...

  4. 在SpringMVC中使用@RequestBody注解处理json时,报出HTTP Status 415的解决方案

    在SpringMVC中使用@RequestBody注解处理json时,报出HTTP Status 415的解决方案 参考文章: (1)在SpringMVC中使用@RequestBody注解处理json ...

  5. @RequestBody注解分析

    @RequestBody注解风析 get和post GET可以拥有请求体,RFC 文档中从来就没有说过 GET 没有请求体.RFC 只是说GET 意味着通过 URI 来识别资源.所以GET请求体中的数 ...

  6. spring里面 @Controller和@RestController注解的区别

    问题:spring里面 @Controller和@RestController注解的区别 spring里面 @Controller和@RestController注解的区别 Web MVC和REST ...

  7. lombok 的bug?lombok 导致 springmvc 使用 @RequestBody注解 接收 json数据 对象参数绑定失败

    大家好,我是烤鸭:     lombok 导致 springmvc 使用 @RequestBody注解 接收 json数据 对象参数绑定失败.     环境版本:         spring 5.x ...

  8. MongoDB:SpringBoot有关@Document(collection = )与@Document(collation= )注解的区别

    目录 QUESTION:SpringBoot有关@Document(collection = "")与@Document(collation= "")注解的区别 ...

  9. @PathVariable、@RequestParam、@RequestBody注解

    讲解更加详细的参考资料 https://blog.csdn.net/u011410529/article/details/66974974 https://www.cnblogs.com/soul-w ...

最新文章

  1. vim 打开Linux下文件每一行后面都有^M的样式
  2. 无线充电系统的功率与效率
  3. 跳石头 NOIP2015 提高组 Day2 T1
  4. python爬虫知识点总结(十三)使用代理处理反扒抓取微信文章
  5. android系统release签名
  6. mysql分区跨机器_(转) mysql的分区技术 .
  7. c语言程序员写贪吃蛇代码28,厉害了,程序员28行代码写贪吃蛇游戏,附源码!...
  8. ubuntu重置面板
  9. React学习笔记(持续更新)
  10. AtCoder-2379 - 连接竹竿 思维 | 数学
  11. 使用pytorch自定义DataSet,以加载图像数据集为例,实现一些骚操作
  12. java integer常量池_为什么Integer常量池的行为在127发生变化?
  13. icesat-2 数据产品
  14. 如何理解最小二乘法?
  15. ROSBridge - ROS系统与非ROS外部系统的通信的C++客户端实现
  16. 《计算机网络(第七版)谢希仁 编著》第一章内容总结及部分解题
  17. JDK1.8版本linux、Windows64下载
  18. ultraedit编译java_在UltraEdit中编译和运行Java程序
  19. 离散数学--Chap14 图
  20. 从基础到进阶,一文详解RocketMQ事务消息,看完不会跪键盘

热门文章

  1. Idea运行报错Error running ‘Application‘: Command line is too long的解决方法
  2. HashMap遍历方式
  3. 网络基础知识:FTP命令及应答码
  4. 【编译器】VSCode配置Go语言开发环境
  5. 如何画正太分布曲线_python scipy.stats实现各种常见的统计分布
  6. java歌词高亮显示滚动_js如何处理音乐播放器的歌词文件达到高亮以及滚动的效果?...
  7. SQL Sever 数据完整性
  8. css设置按钮竖直方向居中_button内flex垂直居中竟然不居中的解决
  9. 穿上马甲就没认出polya定理之典型题目手环
  10. java设置小数位数_java设置小数点后位数