Springboot 接口需要接收参数类型是数组问题

目录
  • 接口需要接收参数类型是数组
    • 多个参以“,”拼接传递即可
    • 那么除了这样,我们还能怎么协调呢?
  • springboot接口接收数组及多个参数问题
    • 若接口中需要接受数组,那接口应该如何写呢?
    • 在body中用json格式传参数不就好了吗!
    • 问题解决~

接口需要接收参数类型是数组

如题,一般我们普遍采用的协调方式:

多个参以“,”拼接传递即可

如:

那么除了这样,我们还能怎么协调呢?

其实对应get请求,springmvc内部是已经支持了这种以“,”逗号拼接的方式,也就是说,传参方式不变,但是我们后台接收的时候,可以不用那么繁琐以逗号切割,可以这样:

post请求除了可以要求传参以“,”逗号拼接,我们接口接到参后再切割,还可以直接要求对方传数组,我们用实体类接收

如:

也可以使用Map来接收 :

好了就到此,为什么要发这个文章,因为今天公司有伙伴在对数组参数的传递接收发问,我觉得有必要给一些伙伴普及一下这些普遍的处理协调参数为数组类型的接口方式。

springboot接口接收数组及多个参数问题

本例为个人经历,必然存在认知局限与不足,欢迎指正以及提供更好方法。

若接口中需要接受数组,那接口应该如何写呢?

一般而言我们会想到

@PostMapping("/xxxx")
public String test(List list){
    do sth;
}

假设我们写的接口正确,写完接口我希望使用postman来测试一下

params中似乎无法传数组呀

在body中用json格式传参数不就好了吗!

于是,修改接口

@PostMapping("/xxxx")
public String test(@RequestBody List list){
    do sth;
}

问题解决~

但是往往我们写接口的时候需要接收的参数不止简单数组,有可能是一个非常复杂的对象。

这里我们将问题假设为需要接收的参数为对象+数组,如下。

{
	"abroad": {
		"id":5,
		"studentId":1,
		"projectName":"哈佛访学"
	},
	"params": ["id","studentId","projectName"]
}

自然地,我们一般会这么想:

@PostMapping("/xxxx")
public String test(@RequestBody Abroad abroad,@RequestBody List<String> params){
    do sth;
}

但是这是错的!!

如果使用@RequestBody,只允许有一个参数。那希望上传多个对象怎么办呢?对!就是包个对象!!类似下面这样:

@PostMapping("/xxxx")
public String test(@RequestBody ParaDTO paraDTO){
    do sth;
}
class ParaDTO{
    Abroad abroad;
    List<String> params;
}

解决~

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • SpringBoot如何接收数组参数的方法

    1.创建一个表单实体类,将数组封装到实体类中(Post提交) 表单类代码: @Data public class MyForm { private int[] ids; } 控制器代码: @Slf4j @RestController @RequestMapping("/info") public class InfoController { @PostMapping("/test") public String test(@RequestBody MyForm fo

  • SpringBoot 设置传入参数非必要的操作

    我就废话不多说了,大家还是直接看代码吧~ 设置参数是否为必要参数 @RequestParam(required = false) 补充:SpringBoot 开发案例之参数传递的正确姿势 前言 开发这么多年,肯定还有不少小伙伴搞不清各种类型的参数是如何传递的,很多同学都是拿来即用,复制粘贴一把撸,遇到问题还是一脸懵逼. 姿势 学习参数传递的正确姿势,先说怎么做,再说为什么,本质上还是复制粘贴一把撸,问题是你想问不想问为什么! 传递 用户登录 前端代码: var param = { "userna

  • SpringBoot接口接收json参数解析

    目录 SpringBoot接口接收json参数 前言 前提 一.GET 二.DELETE 三.POST/PUT/PATCH Springboot restFul 参数检验 概述 常用注解 简单应用举例 自定义校验 抛出BindException而非MethodArgumentNotValidException SpringBoot接口接收json参数 前言 通常来讲,HTTP 方法会映射为 CRUD 动作,但这并不是严格的限制,有时候 PUT 也可以用来创建新的资源,POST 也可以用来更新资源

  • Springboot 接口需要接收参数类型是数组问题

    目录 接口需要接收参数类型是数组 多个参以“,”拼接传递即可 那么除了这样,我们还能怎么协调呢? springboot接口接收数组及多个参数问题 若接口中需要接受数组,那接口应该如何写呢? 在body中用json格式传参数不就好了吗! 问题解决- 接口需要接收参数类型是数组 如题,一般我们普遍采用的协调方式: 多个参以“,”拼接传递即可 如: 那么除了这样,我们还能怎么协调呢? 其实对应get请求,springmvc内部是已经支持了这种以“,”逗号拼接的方式,也就是说,传参方式不变,但是我们后台

  • SpringBoot接口如何对参数进行校验

    目录 前言 什么是不优雅的参数校验 实现案例 POM 请求参数封装 Controller中获取参数绑定结果 校验结果 进一步理解 Validation分组校验? @Validate和@Valid什么区别? 有哪些常用的校验? 自定义validation? 前言 在以SpringBoot开发Restful接口时, 对于接口的查询参数后台也是要进行校验的,同时还需要给出校验的返回信息放到上文我们统一封装的结构中.那么如何优雅的进行参数的统一校验呢? 什么是不优雅的参数校验 后端对前端传过来的参数也是

  • java 用泛型参数类型构造数组详解及实例

    java 用泛型参数类型构造数组详解及实例 前言: 前一阵子打代码的时候突然想到一个问题.平时我们的数组都是作为一个参数传入方法中的,如果我们要想在方法中创建一个数组怎么样呢?在类型明确的情况下,这是没什么难度的.如果我们传入的参数是泛型类型的参数呢? public static <T> T[] creArray (T obj){ T[] arr = new T[10]; } 像上面这种用T来直接new数组的方法是错误的,会编译时出现一个:Cannot create a generic arr

  • springboot接口接收数组及多个参数的问题及解决

    目录 springboot接口接收数组及多个参数问题 springboot接收复杂集合参数,集合对象 springboot接口接收数组及多个参数问题 本例为个人经历,必然存在认知局限与不足,欢迎指正以及提供更好方法. 若接口中需要接受数组,那么接口应该如何写呢? 一般而言我们会想到 @PostMapping("/xxxx") public String test(List list){ do sth; } 假设我们写的接口正确,写完接口我希望使用postman来测试一下 params中

  • springboot:接收date类型的参数方式

    目录 springboot:接收date类型的参数 springboot 传递Date等实体参数时候报错 springboot:接收date类型的参数 今天有个postmapping方法,地址都正确,就是死活进不去,真是奇怪了. 终于从日志中得出些端倪,见下: 只有这个属性报错,恰恰这个属性是Date型. 这句话说得更清楚: "defaultMessage":"Failed to convert property value of type 'java.lang.String

  • SpringBoot实现接口的各种参数校验的示例

    目录 1.添加依赖 2.接口参数校验 2.1 requestBody参数校验 2.2 requestParam/PathVariable参数校验 3.统一异常处理 4.进阶使用 4.1 分组校验 4.2 嵌套校验 4.3 集合校验 4.4 自定义校验 5.快速失败 (Fail Fast) 6.@Valid和@Validated区别 7.实现原理 7.1 requestBody参数校验实现原理 7.2 方法级别的参数校验实现原理 在我们进行接口开发时,在对参数的接收时,我们需要冗余复杂的校验规则

  • springmvc接口接收参数与请求参数格式的整理

    目录 springmvc接口接收参数与请求参数格式 一.首先我们需要认识下http请求中的Content-Type 二.注解@RequestParam(value="id") 三.注解@RequestBody springmvc接口接受前端传递参数数据类型总结 一.springMVC中controller参数是自动注入 二. 接受前端传递的对象 三.小结一下 springmvc接口接收参数与请求参数格式 前言: 相信大家在刚开始接触接口定义与调用时遇到过接口接收不到请求参数的问题,本人

  • SpringBoot实现前后端、json数据交互以及Controller接收参数的几种常用方式

    目录 前言 获取参数的几种常用注解 一.请求路径参数get请求 二.Body参数POST请求 四.HttpServletRequest 五.参数校检 最终选择交互方式 参考文献 总结 前言 现在大多数互联网项目都是采用前后端分离的方式开发,前端人员负责页面展示和数据获取,后端负责业务逻辑处理和接口封装.当与前端交互的过程当中,常用json数据与前端进行交互,这样想取出前端传送过来的json数据的时候,就需要用到@RequestBody这个注解.@RequestBody注解用于读取http请求的内

  • springboot接口参数校验JSR303的实现

    目录 一.在controller接口处理校验异常 二.统一异常处理 三.错误码枚举类 四.自定义参数校验注解 在 javax.validation.constraints包中定义了非常多的校验注解,引入依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependenc

随机推荐