后端接收前端传的参数主要有两种方式:

第一种:

用变量来接收,前端传递的参数会对相同变量名进行赋值.

第(1)种:

    @GetMapping("/info/{id}")public ApiResult<List<Test>> testModel(@PathVariable("id") Long id) {//方法体}

第(2)种:

@RequestParam()指定的参数可以是普通元素、 数组、集合等等.

    @PostMapping("/info")public ApiResult<List<Test>> testModel(@RequestParam(value = "areaId", required = false) String areaId) {//方法体}

第二种:

用对象来接收,前端传递的参数会对对象里面的相同属性名进行赋值.

如若对象是集合和数组等等,则会对相同对象名进行赋值,或者也可以对相同变量名进行                     赋值.

    @PostMapping("/pageList")public ApiResult<List<Student>> testModel(@Valid @RequestBody Student student) {//方法体}

注解详解:

@RequestBody

@RequestBody 主要用来接收前端传递给后端的 json 字符串中的数据(请求体中的数据);

Get 方式无请求体,所以使用 @RequestBody 接收数据时,前端不能使用 Get 方式提交数据;
而是使用 Post 方式进行提交的。在后端的同一个接收方法里,@RequestBody 与 @RequestParam() 可以同时使用; @RequestBody 最多只能有一个,而 @RequestParam() 可以有多个。

  • 注:一个请求,只有一个 RequestBody;一个请求,可以有多个 RequestParam。
注:当同时使用 @RequestParam()和 @RequestBody时:@RequestParam()指定的参数可以是普通元素、 数组、集合、对象等等(即当:@RequestBody 与 @RequestParam() 可以同时使用时,原 SpringMVC 接收参数的机制不变,只不过 RequestBody 接收的是请求体里面的数据;而 RequestParam 接收的是 key-value 里面的参数,所以它会被切面进行处理从而可以用普通元素、数组、集合、对象等接收)即:如果参数时放在请求体中,传入后台的话,那么后台要用 @RequestBody 才能接收到;如果不是放在请求体中的话,那么后台接收前台传过来的参数时,要用 @RequestParam 来接收,或则形参前什么也不写也能接收。
注:如果参数前写了 @RequestParam(xxx),那么前端必须有对应的 xxx 名字才行(不管其是否有值,当然可以通过设置该注解的 required 属性来调节是否必须传)如果没有 xxx 名的话,那么请求会出错,报400。
注:如果参数前不写 @RequestParam(xxx) 的话,那么就前端可以有可以没有对应的 xxx 名字才行,如果有 xxx 名的话,那么就会自动匹配;没有的话,请求也能正确发送。

@RequestParam

@RequestParam 用于将请求参数区域的数据映射到控制层功能处理方法的参数上

  • 主要参数语法:

    @RequestParam(value=“参数名”, required=“true/false”, defaultValue="")

1、value:请求中传入参数的名称,如果不设置后台接口的 value 值,则会默认为该变量名。如下图中第一个参数如果不设置 value=“pageNum” ,则前端传入的参数名必须为 pageNum ,否则在后台接口中 pageNum 将接收不到对应的数据。

2、required:是否包含该参数,默认为 true,表示该请求路径中必须包含该参数,如果不包含就报404等错误。如果设置为 false 时,当请求中没有此参数,将会默认为 null,而对于基本数据类型的变量,则必须有值,这时会抛出空指针异常。如果允许空值,则接口中变量需要使用包装类来声明。

3、defaultValue:默认参数值,如果设置了该值,required=true 将失效,自动为 false,如果没有传该参数,就使用默认值。

@PathVariable

接收请求路径中占位符的值,
@PathVariable 注解可以将 URL 中占位符参数绑定到控制器处理方法的入参中;URL 中的 {xxx} 占位符可以通过 @PathVariable(“xxx“) 绑定到操作方法的入参中。
如下图示:

@Valid

@Valid 注解可以实现数据的验证,可以先定义实体,在实体的属性上添加校验规则,而在 Api 接收数据
时添加 @valid 关键字,这时定义的实体将会开启一个校验的功能。

@Valid 注解用于校验时所属包为:javax.validation.Valid。

  • 首先需要在实体类的相应字段上添加用于充当校验条件的注解,如下图示:

  • 其次在 controller 层的方法校验的参数上添加 @Valid 注解,并且需要传入 Dto 实体类对象,用于校验获取相应字段上添加的 message 中的内容,如下图示:

  • 注:不要错用了异常类型,比如在 int 上不可用 @size

----------- @区别对比 -----------

@RequestBody注解和 @RequestParam 注解的区别

在 Get 请求中,不能使用 @RequestBody。 在 Post 请求,可以使用 @RequestBody 和 @RequestParam,但是如果使用 @RequestBody,对于参数转化的配置必须统一。

@RequestParam 注解接收的参数是来自于 requestHeader 中,即请求头。都是用来获取请求路径 url 中的动态参数。也就是在 url 中,格式为 xxx?username=123&password=456。
@RequestBody 注解接收的参数则是来自于 requestBody 中,即请求体中。

@RequestParam 注解和 @PathVariable 注解的区别

@RequestParam 和 @PathVariable 注解是用于从 request 中接收请求的,两个都可以接收参数,关键点不同的是 @RequestParam 是从 request 里面拿取值,而 @PathVariable 是从一个 url 模板里面来填充。

@RequestParam 注解是获取静态 url 传入的参数
@PathVariable 是获取请求路径中的变量作为参数,需要和 @RequestMapping(“item/{itemId}”) 配合使用。

----------- @验证信息表 -----------

验证信息的说明表

@RequestBody、 @RequestParam 、 @PathVariable 和 @Vaild 注解相关推荐

  1. @RequestBody、 @RequestParam 、 @PathVariable 和 @Vaild 注解的使用及区别

    @RequestBody @RequestBody 主要用来接收前端传递给后端的 json 字符串中的数据(请求体中的数据): Get 方式无请求体,所以使用 @RequestBody 接收数据时,前 ...

  2. Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable(转)

    最近需要做些接口服务,服务协议定为JSON,为了整合在Spring中,一开始确实费了很大的劲,经朋友提醒才发现,SpringMVC已经强悍到如此地步,佩服! 相关参考:  Spring 注解学习手札( ...

  3. @ResponseBody,@RequestBody,@PathVariable

    最近需要做些接口服务,服务协议定为JSON,为了整合在Spring中,一开始确实费了很大的劲,经朋友提醒才发现,SpringMVC已经强悍到如此地步,佩服!   相关参考: Spring 注解学习手札 ...

  4. 关于@Vaild注解的使用

    一,首先@Vaild注解是 javax.validation.Valid包下面的 二,作用:@Vaild注解的作用就是通过对前端传递过来的参数属性进行验证,前提是在pojo属性中加入验证条件,如 @S ...

  5. @Vaild注解使用详解

    @Vaild注解使用 @Valid注解使用场景 @Vaild可帮助开发者进行参数校验, 如字符串的非空校验, 字符串的长度校验, 数字的最小最大值校验等. 可帮助开发者减少大量的参数校验代码代码. 使 ...

  6. 重点:@RequestMapping(含参数详解)和@RequestParam、@RequestBody、@PathVariable、@RequestHeader

    @RequestMapping注解 @RequestMapping是一个用来处理请求地址到处理器controller功能方法映射规则的注解,这个注解会将 HTTP 请求映射到 MVC 和 REST 控 ...

  7. @RequestParam @PathVariable

    1.Request参数 在访问各种各样网站时,经常会发现网站的URL的最后一部分形如:?xxxx=yyyy&zzzz=wwww.这就是HTTP协议中的Request参数,它有什么用呢?先来看一 ...

  8. SpringMVC注解@RequestParam全面解析____ 注解@RequestParam如何使用加与不加的区别

    SpringMVC注解@RequestParam全面解析 在此之前,写项目一直用的是@RequestParam(value="aa" required=false)这个注解,但是并 ...

  9. SpringBoot @Vaild注解拦截不生效

    不要单独引入包,可能引入的包不全导致不生效! 直接引入SpringBoot 的starter <dependency><groupId>org.springframework. ...

最新文章

  1. nginx调用PHP有sock方式和端口方式
  2. 服务器如何向c winform推送信息,C局域网聊天工具消息推送实现思路与源码.doc
  3. SignalR集成Autofac
  4. 第四篇 群聚类非线性表的编程实验 第11章 应用图的遍历算法编程
  5. html多个盒子重叠浮动,如何让浮动后的多个盒子水平居中
  6. [c#]Dll自定义目录
  7. mysql触发器新元组_MySQL触发器-条件触发器语法
  8. android webview卡顿检测_Android webview隐藏后跳转新页面input输入卡顿与白屏渲染慢的问题说明及修复方案...
  9. cmd中编译、执行Java文件
  10. 第 4 章 MybatisPlus 条件构造器
  11. 微软商店下载的python_Python 登录微软 Win10 应用商店
  12. Kafka高频面试题:夺命10连问
  13. GitHub上广受欢迎的下载神器:youtube-dl
  14. Metasploit后门渗透Linux系统以及跨平台后门生成
  15. 知云文献翻译软件及遇到的一些问题
  16. 基于nonebot2+go-cqhttp的QQ机器人构建(1)机器人搭建
  17. 如何做Code Review——读后感
  18. 恒太照明在北交所上市:募资规模缩水三成,第三季度收入下滑
  19. sudo apt install python3-pip安装失败
  20. R极简教程-10:R语言绘图基础

热门文章

  1. 技术的真相 I 让手机夜拍也精彩的原理竟然是...
  2. 微软必应壁纸spotlight锁屏壁纸获取
  3. java手机壁纸_java-爬取手机高清壁纸
  4. Laravel接入SDK淘宝客调用
  5. gcc -m32报错解决
  6. 支付宝转账又出新方法:悬浮条自动识别输入,避免失误尴尬
  7. 三峡学院计算机调剂,重庆三峡学院2019考研调剂信息公告
  8. android 分享图片到朋友圈 大小限制,朋友圈传播图的尺寸是多少?朋友圈图片大小限制...
  9. tcl语言读取文件一行_tcl读取数据输入输出
  10. 读美妆论文AN AUTOMATIC FRAMEWORK FOR EXAMPLE-BASED VIRTUAL MAKEUP