requestbody 和requestparam注解_requestbody和request-程序员宅基地

技术标签: java  

  之前很多注解老是不太清楚作用并且容易搞混,这次一次性搞明白!

  这是最近在使用postman做接口测试的时候发现自己的这个知识盲点。我们通常使用postman做测试的时候最常用的就是post与get请求,两者的区别主要在于一个将参数放在url中进行传递一个将参数放在request body中进行传递这里我们不做过多陈述。直接上干货!

  RequestBody注解的主要作用就是用于接收前端的参数,当我们使用post请求的时候,我们会将参数放在request body中,此时我们就需要在Controller的方法的参数前面加上@RequestBody用来接受到前端传过来的request body中的值,举个栗子:

    @Controller
    @RequestMapping(“/test”)
    public class test{
     
    public void testMethod(@RequestBody String string)"{
     
           System.out.println("测试");
      
      }
    }

写法很简单就是这样,直接在参数前面加一个注解就可以了,接下来我们详细介绍一下使用过程中需要注意的问题:

首先当我们使用@RequestBody接收数据的时候,前端的请求方法要使用post方式来进行提交;

第二、一个请求只能有一个RequestBody,也就是说,当一个方法中有两个参数的时候,最多只能有一个参数加@RequestBody注解用来接受request body中的参数;

第三、@RequestBody接受的参数是来自request body中也就是请求体。一般用于处理非Content-Type:application/x-www-form-urlencoded编码格式的数据。比如application/json、application/xml等。

  说到RequestBody就不得不说到RequestParam,首先介绍一下RequestParam的使用场景:

@RequestParam接收的参数主要是来自request Header中,即请求头中。通常用于get请求中,我们都知道get请求的参数都是写在url中的,例如:http://localhost:8080/my/api/testMethod?name=雷神&age=3   该url我们可以看到有那么和age两种属性,那么当我们将此请求发送到后台服务以后,Controller写法如下:

    @Controller
    @RequesMapping(“/api”)
    public class test{
     
    public void testMethod(@RequestParam(value="name",required=false,defaultValue="雷神")String name,@RequestParam(value="age")Int age){
     
        System.out.println("年仅"+age+“岁肥宅”+name);
     
    }
     
    }

  testMethod方法中的参数一共有两个,一个是name,一个是age。与RequestBody不同的是,如果你在参数前面加了@RequestParam注解那么该参数则请求中则必须有对应的参数名(不管其是否有值),否则的话请求会报错(应该是报400)!如果不加@RequestParam注解的话,当你的请求中有对应的参数名的时候会自动匹配到值,如果没有对应的参数的话请求特可以也可以正常发送。

  现在解释一下@RequestParam的括号中的三个参数的意思,value值得就是请求的url中必须要有的参数名,相当于key值;required表示的是是否为必须,也就是说参数在url中是否为必须,默认的是true;defaultValue指的则是参数的默认值;

  还有一点需要解释一下,如果你直接在参数前面加上@RequestParam,那么该参数的名字就是url中必须要有的参数名

  总结一下,RequestParam接收的参数是来自requestHeader中,即请求头,通常用于get请求。RequestBody注解接收的参数是来自requestBody中的,即请求体;一般用于处理非Content-Type:application/x-www-form-urlencoded编码格式的数据,比如application/json、application/xml等类型的数据;
 

下边我们就来说一说requestbody 接受了 json格式的请求体后怎么处理

 优化 

 自己还得去了解一下

handlermapping  ...

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_52988841/article/details/131685811

智能推荐

华为机试真题实战应用【赛题代码篇】-过滤组合字符串(附Java和python代码实现)-程序员宅基地

文章浏览阅读148次。和一个屏蔽字符串“ux”,那么“78”可以组成多个字符串例如:“ux”,“uw”,“vx”,“vw”,过滤这些完全包含屏蔽字符串的每一个字符的字符串,然后输出剩下的字符串。例如7关联"u","v",8关联"x","w",输入一个字符串例如“78”,0 关联 "a","b","c"1 关联 "d","e","f"2 关联 "g","h","i"3 关联 "j","k","l"4 关联 "m","n","o"5 关联 "p","q","r"7 关联 "u","v"8 关联 "w","x"

17、基于51单片机GSM短信湿度远程浇花浇水控制系统设计(程序+原理图+仿真+参考论文+元件清单+开题报告等)-程序员宅基地

文章浏览阅读807次,点赞19次,收藏19次。本设计是基于STC89C52单片机和ADC0832的GSM远程浇花系统。本设计的电路内部包含湿度采集和AD转换等主要功能以及GSM收发短信功能。远程浇水系统设计的浇水部分是通过单片机程序设计浇水的上下限值与感应电路送入单片机的土壤湿度值相比较,当低于下限值时,单片机控制GSM模块发送缺水短信,用户收到短信后回复浇水,单片机收到回复的短信后输出一个信号控制浇水,高于上限值时再由单片机输出一个信号控制停止浇水,并回复短信浇水完成到用户手机上。这样可以帮助人们及时地给心爱的盆花浇水。STC89C52;

PIE SDK打开HDF、NC数据-程序员宅基地

文章浏览阅读318次。1. 功能简介 HDF 是美国国家高级计算应用中心(National Center for Supercomputing Application)为了满足各种领域研究需求而研制的一种能高效存储和分发科学数据的新型数据格式。 NC是NetCDF的简称,其全称为Network Common Data Form(网络通用数据格式),其是针对科学数据的特点开发的,是一种面向数组型..._hdf文件可以用sdk打开吗

解决Android项目在eclipse中无法打包apk文件[bin目录下没生成apk文件]的问题-程序员宅基地

文章浏览阅读251次。原因在于:Window-->Preferences-->Android-->Build中“Skippackaginganddexinguntilexportorlaunck”选项默认是勾上的,因此去掉该选项就OK了解决:1,首先把以上的那个选项去掉2,点击Project中的Clean选项,重新..._在ubuntu使用buildozer打包到一半失败,最终在bin里面没有生成apk

防关联浏览器指纹管理:保护账号不受干扰-程序员宅基地

文章浏览阅读46次。在如今的网络环境中,我们的个人信息和行为轨迹往往被广泛追踪和记录,构成了所谓的“浏览器指纹”。这种指纹信息可以通过诸如IP地址、设备信息、浏览历史、Canvas指纹等多种方式被网站用来识别和关联用户,从而影响用户的隐私和安全。然而,虚拟的出现为我们提供了一种有效的解决方案,使得我们可以在网络世界中保持匿名和隐私。

制作(改制)自己的linux镜像(iso)_linux制作镜像iso文件-程序员宅基地

文章浏览阅读4.2k次。5.这时就可以修改/data/iso中的文件了,本次我是修改了镜像中的脚本中的一小段脚本,然后也可以添加你需要的压缩包到你需要放的目录。2.创建零时需要的文件夹两个 一个是用来挂载镜像到目录上的,另外一个是制作(改制)新镜像的源目录。6.打包源文件夹为新的镜像文件(iso),就会在你执行这条命令的目录下打包好新的镜像文件了。7.可以把这个新的镜像文件使用vm加载安装系统,very nice!3.挂载VM主机的CDROM到 /media/cdrom上。4.同步cdrom的镜像文件到 上面创建的源文件夹。_linux制作镜像iso文件

随便推点

python简单编程小游戏,python小游戏编程代码_python编程小游戏-程序员宅基地

文章浏览阅读960次,点赞17次,收藏16次。这篇文章主要介绍了python简单编程小游戏,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。哈喽铁子们。_python编程小游戏

linux 清屏函数_lvgl清屏-程序员宅基地

文章浏览阅读735次。在操作学生管理系统时,想实现一个效果就是 清屏,试了好几种都不满意,终于让我找到一个合适的printf("\033c");这个可以 效果杠杠的_lvgl清屏

判断并输出两个数之间的奇数_输入一个两位数,显示从 1 到你输入的两位数(包括这个数)之间所有的奇数和奇数的个-程序员宅基地

这段代码似乎在尝试让用户输入两个整数,然后判断并输出这两个数之间的奇数。文章内容杂乱无章,难以理解。

vue中使用router动态加载路由找不到文件_vue-router动态添加路由 找不到文件-程序员宅基地

文章浏览阅读1.1k次。该文章仅为个人踩坑记录,如有代码错误请提出,本人将积极改正。_vue-router动态添加路由 找不到文件

c++ char数组和string间的相互转换_c++ char数组转换成string-程序员宅基地

文章浏览阅读1.2k次,点赞22次,收藏18次。今天做题遇到了char数组和string间的相互转换的问题,网上搜有点散,来整理一下。_c++ char数组转换成string

QWebEngineView如何忽略SSL证书错误_qwebengineview ssl-程序员宅基地

文章浏览阅读4.5k次,点赞7次,收藏19次。最近用QT写客户端软件,思路是使用QWebEngineView来绘制本地的html或者服务器上的html做界面展示。可是发现QWebEngineView在Load一个https的URL的时候,由于ssl证书不可信导致提示有错误,无法显示内容,在QWebEngineView这个类里面找了半天都没看到忽略SSL证书错误的方法,后面终于找到了,原来在藏在QWebEnginePage这个类里面。这里,..._qwebengineview ssl