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

智能推荐

UE4C++学习篇(十五)-- 射线检测之通道检测和对象检测_linetracesinglebychannel-程序员宅基地

文章浏览阅读4.2k次,点赞4次,收藏13次。在游戏中,常常会遇到和某些道具进行交互的情况,这个时候就需要使用射线检测去检测玩家是否能和道具进行交互。射线检测常用的有两种,一种是通道检测(LineTraceSingleByChannel),一种是对象检测(LineTraceSingleByObjectType)。..._linetracesinglebychannel

HTML SVG通过currentcolor设置主题色_svg currentcolor-程序员宅基地

文章浏览阅读323次。currentcolor = 上级元素的color属性。_svg currentcolor

GNOME 3 要去掉窗口最小化按钮_gnome 没有最小化-程序员宅基地

文章浏览阅读2.5k次。还有一个月GNOME 3就要发布了,gnome.org首页上显示4月6号就要发布。不知道会不会继续延期~。不过今天忽然看到gnome 开发人员Owen Taylor介绍gnome的窗口控制,提到GNOME 3要去掉最小化和最大化按钮。最大化可以通过窗口拖拽或者双击标题栏实现,但最小化貌似就没有什么好的方法。关于这个问题,Allan Day和Owen都给出了解释。下面针对ALLan Day的解释摘录翻译一部分,以期说明GNOME 3做出如此改变的原因 移除最小化按钮原因有: 1.最小化按钮在最新的_gnome 没有最小化

pythondistutils安装_Python深入:Distutils安装包-程序员宅基地

文章浏览阅读2.2k次。一:简介尽管Python标准库已经支持很多的功能,但是有时还是会需要以第三方模块的形式添加新的功能到Python中。在最简单的场景中,是你要安装的模块,已经有了针对你的平台的安装版本,因此只需要像安装其他软件一样安装他们即可。比如针对Windows用户的安装程序,针对基于RPM的Linux用户的RPM包等等。这种情况,只需要将该安装包下载下来,直接安装即可,比如直接运行”rpm –install”..._python 安装distutils

转载:IP-Guard都干了些什么(其他如威盾等亦差不多)-程序员宅基地

文章浏览阅读1.4k次。##IP-Guard 整个一裹着信息安全软件外衣的超级流氓,下面来看一下它对我们的系统都干了什么。首先是生成的文件,别看它安装程序那么小,其实生成的文件很多也一点都不小C:\Program Files\Common Files\SystemC:\WINDOWS\system32\driv..._装ip guard的都是什么垃圾企业

C语言利用指针实现三个数大小排疼,c语言:利用指针变量,用函数实现将3个整数按从大到小的顺序输出...-程序员宅基地

文章浏览阅读1.8k次,点赞2次,收藏8次。利用指针变量,用函数实现将3个整数按从大到小的顺序输出。解:程序:#includevoid swap(int *ptr1, int *ptr2){int temp = *ptr1;*ptr1 = *ptr2;*ptr2 = temp;}void exchange(int *q1, int *q2,int *q3){void swap(int *ptr1, int *ptr2);if (*q1 &l..._题目描述 利用指针实现三个数从大到小输出。 交换2个数的函数可以利用你在2453上

随便推点

湘潭OJ-1267-树的直径-dp求法_oj树的直径-程序员宅基地

文章浏览阅读463次。http://202.197.224.59/OnlineJudge2/index.php/Problem/read/id/1267 这道题卡了我小半个月,最后发现错误竟然是不能用lld,在湘潭oj只能用i64d。。55 不过收获也是蛮大的。 比较重要的地方 1 第一次dfs用后跟遍历,以求得到一条最长路。这时候求得是点为起点的时候的 最长路 2 第二次是求点为终点的时候的最长路。注意。在_oj树的直径

CANopen指令_canopen指令表-程序员宅基地

文章浏览阅读568次。MC_ReadActualPosition_CO读位置。MC_ReadActualVelocity_CO读速度。MC_WriteParameter_CO写参数。MC_MoveAbsolute_CO绝对定位。MC_MoveRelative_CO相对定位。MC_MoveVelocity_CO速度指令。MC_ReadParameter_CO读参数。MC_Home_CO原点回零。MC_Power_CO使能。MC_Reset_CO复位。MC_Halt_CO暂停。MC_Stop_CO停止。MC_Jog_CO点动。_canopen指令表

JS-事件_js获取鼠标移动距离-程序员宅基地

文章浏览阅读286次。2.1 什么是事件_js获取鼠标移动距离

高频知识汇总 |【计算机网络】面试题汇总(万字长文通俗易懂)_主路由器不经请求,主动向外发出的arp消息,这样其他机器就能知道默认网关的mac地址-程序员宅基地

文章浏览阅读1.3k次,点赞2次,收藏3次。这篇【计算机网络】是我在学习时自己整理的,大部分都是按我个人的理解来写的答案。废话不多说直接铺干货。_主路由器不经请求,主动向外发出的arp消息,这样其他机器就能知道默认网关的mac地址

配置双网卡双路由_双网卡路由设置-程序员宅基地

文章浏览阅读3.7k次,点赞10次,收藏11次。记一次配置双网卡_双网卡路由设置

组合数学中 序数法生成一个新的序列_组合数学 序数法-程序员宅基地

文章浏览阅读481次。a10a9a8a7a6a5a4a3a2a1 对应数组中已知求对于ai = j那么在p中小于i+1的个数为j那_组合数学 序数法

推荐文章

热门文章

相关标签