【SpringMVC】深入剖析使用 Postman 在哀求中通报对象类型、数组类型、参数 ...

打印 上一主题 下一主题

主题 956|帖子 956|积分 2870





SpringMVC—哀求传参


1. 通报对象


假如参数比较多时,方法声明就需要有很多形参;而且后续每次新增一个参数,也需要修改方法声明.
我们不妨把这些参数封装为一个对象;

Spring MVC 也可以自动实现对象参数的赋值,比如 Userinfo 对象:


我们对 Userinfo 界说属性:name ,gender ,age,而且通过下列方式,重写 getter,setter,toString 方法:

  1. package com.example.springmvc_demo;
  2. public class Userinfo {
  3.     private String name;
  4.     private Integer gender;
  5.     private Integer age;
  6.     public String getName() {
  7.         return name;
  8.     }
  9.     public void setName(String name) {
  10.         this.name = name;
  11.     }
  12.     public Integer getGender() {
  13.         return gender;
  14.     }
  15.     public void setGender(Integer gender) {
  16.         this.gender = gender;
  17.     }
  18.     public Integer getAge() {
  19.         return age;
  20.     }
  21.     public void setAge(Integer age) {
  22.         this.age = age;
  23.     }
  24.     @Override
  25.     public String toString() {
  26.         return "Userinfo{" +
  27.                 "name='" + name + '\'' +
  28.                 ", gender=" + gender +
  29.                 ", age=" + age +
  30.                 '}';
  31.     }
  32. }
复制代码
通报对象代码实现:


我们启动程序,通过 Postman 构造哀求:




假如我们把属性的 Integer 设置成 int,而且不传值 (取消勾选),也不会报错,默认为0;

我们在通报对象时,设置的属性名字,必须与后端代码中的对应属性的名字相同!

2. 后端参数重命名(后端参数映射)


某些特殊的情况下,前端通报的参数 key 和我们后端接收的key可以不一致;
   

  • 比如 前端 通报了一个 kw 给后端,而 后端 是使用 keyword 字段来接收的;
  • 如许就会出现参数接收不到的情况;
  • 假如出现这种情况,我们就可以使用@RequestParam来重命名前后端的参数值
  
具体示比方下,后端实现代码:


使用 Postman 发送哀求并传参,通过传参结果我们可以知道,对于前端命名的 kw 是可以正确传参的:


但是,假如我们使用后端命名的 keyword ,则无法传参:


我们查看错误日志:

报错信息的意思是:方法参数类型的所需哀求参数‘kw’不存在

因此,我们加了注解 @RequestParam("kw") 后, kw 这个参数就是必须通报的了;
但是我们刚刚在 Postman 构造哀求时,并没有使用 kw 参数,keyword 是前端的 kw 赋值的,而不是r6 方法中,传入的参数 keyword ;


结论:
   

  • 使用 @RequestParam 进行参数重命名时,哀求参数只能和 @RequestParam 声明的名称一致,才气进行参数绑定和赋值;
  • 使用 @RequestParam 进行参数重命名时,参数就变成了必传参数;
  
3. 非必传参数设置


假如我们的实际业务前端的参数是一个非必传的参数,针对上述题目,如何解决呢?
先来了解下参数必传的原因,我们查看@RequestParam 注解的实现细节,就可以发现端倪,注解实现如下:


可以看到 required 的默认值为 true,表示含义就是:该注解修饰的参数默认为必传
既然如此,我们可以通过设置 @RequestParam 中的 required=false 来克制不通报时报错;

具体实现如下:

可以看到,添加 required=false 之后,kw 前面也加了key,变成了 value =“kw”
注解属性赋值时,没有指明key的话,默认为 value 属性;
假如需要有多个属性进行赋值时,需要写上 key

重写运行程序,再次使用 Postman 发送哀求,相应结果的值固然为 null,但是没有报错:


4. 通报数组


Spring MVC可以自动绑定数组参数的赋值,后端实现代码:

留意打印数组的 Arrays.toString(kunkunLike)

打开 Postman ,重新构造数组哀求:


也可以如许:


5. 通报集合




运行程序,使用 Postman 发送哀求:

说明假如要通报集合,我们的后端代码是不可以如许写的;

我们查看错误日志:

错误日志的意思是:没有为接口java.util.List找到主要的或唯一的构造函数
但是错误日志并不是根本原因,要想解决题目,通报参数,我们就需要使用@RequestParam绑定参数关系

集合参数:


  • 和数组类似,同一个哀求参数名有为多个,且需要使用@RequestParam绑定参数关系
   

  • 默认情况下,哀求中参数名相同的多个值,是封装到数组;
  • 假如要封装到集合,要使用@RequestParam绑定参数关系
  
哀求方式和数组类似:







免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

tsx81428

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表