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

智能推荐

习题7-4 求矩阵各行元素之和(15 分) 本题要求编写程序,求一个给定的m×n矩阵各行元素之和。_本题要求编写程序,求一个给定的m×n矩阵各行元素之和。输入格式:输入第一行给出两个正整数m和n(1≤-程序员宅基地

文章浏览阅读8.4w次,点赞18次,收藏50次。习题7-4 求矩阵各行元素之和(15 分)本题要求编写程序,求一个给定的m×n矩阵各行元素之和。输入格式:输入第一行给出两个正整数m和n(1≤m,n≤6)。随后m行,每行给出n个整数,其间以空格分隔。输出格式:每行输出对应矩阵行元素之和。输入样例:3 26 31 -83 12输出样例:9-715#include <stdio.h&..._本题要求编写程序,求一个给定的m×n矩阵各行元素之和。输入格式:输入第一行给出两个正整数m和n(1≤m,n≤6)。随后m行,每行给出n个整数,其间以空格分隔。输出格式:每行输出对应矩阵行元素之和。

《入门级-Cocos2d 4.0塔防游戏开发》---第二课:游戏加载界面开发_cocos 塔防-程序员宅基地

文章浏览阅读1.1k次,点赞2次,收藏5次。入门级-Cocos2d 4.0塔防游戏开发,模仿国王保卫战,一步一步教你怎么编写一个塔防游戏。_cocos 塔防

Mysql时间范围查询不走索引问题_创建时间小于now()不走索引-程序员宅基地

文章浏览阅读7.2k次,点赞6次,收藏4次。使用Mysql进行数据查询时,如果在SQL语句中出现范围查询,类似如下语句:select * from logs where create_time >= '2020-01-01' ;此时,虽然在create_time字段上添加了索引,但是否会走索引还需要看数据量的情况。如果根据查询条件查询到数据的结果数量小于总数量的五分之一,则会走索引,否则会走全表扫描。因此,在进行范围查询时,比如>、< 、>=、<=等,如果数据量过大的话where语句的条件虽然添加了索引,但也有_创建时间小于now()不走索引

pythonsklearn乳腺癌数据集_Python的Sklearn库中的数据集-程序员宅基地

文章浏览阅读1.2k次。一、Sklearn介绍scikit-learn是Python语言开发的机器学习库,一般简称为sklearn,目前算是通用机器学习算法库中实现得比较完善的库了。其完善之处不仅在于实现的算法多,还包括大量详尽的文档和示例。其文档写得通俗易懂,完全可以当成机器学习的教程来学习。二、Sklearn数据集种类sklearn 的数据集有好多个种自带的小数据集(packaged dataset):sklearn...

下面是一个python函数、哪个说法不正确_2017秋python语言程序设计(北京信息科技大学)答案...-程序员宅基地

文章浏览阅读594次。【单选题】以下可以终结一个循环的执行的语句是【单选题】设计的组件之间的依赖关系图被称为:【单选题】类方法中定义了四个参数,这种情况下实际上有多少参数:【判断题】螺旋式开发可以简化项目管理,能够适应需求经常的变化。【判断题】一个try语句只能配一个except语句。【单选题】递归函数有什么特点?【判断题】单元测试是将程序分离出来独立单元进行测试。【判断题】决策结构问题通常只有一种方案【单选题】以下不..._文件后缀名采用.pyw而不是.py的目的是为了绘制窗口

从预置数据中心迁移至IDC数据中心的七大关键因素-程序员宅基地

文章浏览阅读102次。在数据中心多年的发展进程中,发展已经不可避免地来到拐点(转折点),是购买数据中心还是租赁数据中心?该如何选择呢?业界人士不得不审慎思考、分析利弊,考虑是自建数据中心,自己维护,还是将其外包。(备注:拐点(转折点),又称反曲点,在数学上指改变曲线向上或向下方向的点,直观地说拐点是使切线穿越曲线的点(即曲线的凹凸分界点)。若该曲线图形的函数在拐点有二阶导数..._idc选址事项

随便推点

win10硬盘锁怎么解除_win10如何使用bitlocker解锁硬盘加密-程序员宅基地

文章浏览阅读4.5k次。日常使用计算机的时候,有些情况下可能会遇到需要给bitlocker的加密进行解锁。win10如何使用bitlocker解锁硬盘加密?其实可在系统中直接进行操作。首先找到自己需要解锁的硬盘,右键找到需要进入的选项,初始化之后点击下一步然后再进行一系列的操作即可,具体步骤见下面详细介绍~win10如何使用bitlocker解锁硬盘加密1、选择需要加密的磁盘,然后右击,点击“启用bitlocker”;2..._csdn 硬盘带密码怎么解除

vue koa mysql_[全栈教程]用vue全家桶+koa2+soket.io +mysql写一个聊天应用-程序员宅基地

文章浏览阅读103次。tips:接下去会在github写博客,简书不再更新和修改文章,欢迎大家逛逛我的新博客点击查看 ,我会尽量用更容易理解的方式写好每一篇博客,大家一起学习交流????。vue-chat airchat介绍这是我的毕设项目,产品功能和页面参照qq,微信,TIM,不完全一样,有些是自己的想法。前后端都自己写。感觉是一个挺不错的全栈入门项目,各种交互各种业务逻辑,不花哨,但实用。对node(koa)和vue学习..._koa+mysql聊天功能实现

DC NXT TOPO flow (1)SPG flow 基础_dcnxt-程序员宅基地

文章浏览阅读6.8k次,点赞9次,收藏81次。什么是物理综合 physical synthesis物理综合就是将RTL综合为coarse-placement的网表;这需要让DC工作在TOPO mode' 并使用compile_ultra 命令;需要一个布局文件,一般是ICC生成的;(icc ii design planning);DC NTX topological mode 是支持物理综合的DC NTX in topological mode 使用virtual routing 去估计net的长度; virtual routing ._dcnxt

linux 网络编程_linux网络编程-程序员宅基地

文章浏览阅读2.6k次,点赞3次,收藏25次。linux系统编程-网络编程_linux网络编程

Java进阶之hibernate中cascade与inverse_java面试 cascade和inverse-程序员宅基地

文章浏览阅读1.7k次。我们都知道的是cascade强调的是操作关联对象,inverse强调的是外键的维护权。在我们设置了级联操作后,在保存的时候就会级联保存另外的级联对象,而设置了inverse之后,如果两个对象之间有双向维护关系,就会在设置的一方放弃外键维护权,那它们两个共同使用的时候会产生什么结果呢? 我们可以通过一个简单的案例测试一下,就能得到结果,案例中customer与linkman为一对多关_java面试 cascade和inverse

笔记:mysql删除表内某条纪录的auto_increment属性sql语句。_mysql删除auto_increment-程序员宅基地

文章浏览阅读2.9k次。假定s_user_info表内主键uid设置了auto_increment属性,且该主键的type为int,如果想删除auto_increment属性,那么直接修改下type就ok了。sql语句:alter table s_user_info modify uid int(11);执行后再次desc s_user_info;下查看表字段描述会发现uid的auto_increment属性_mysql删除auto_increment

推荐文章

热门文章

相关标签