SpringBoot不定参数入参

简介: 支持多种参数传递方式:非JSON格式可通过@Valid、@RequestParam、@RequestBody注解传参;JSON格式支持JSONObject接收单个/多个参数,或通过@RequestBody封装对象接收,支持数据校验,结构清晰,便于维护与扩展。

1.非JSON格式入参
@PostMapping(value = "/init", produces = MediaType.APPLICATION_JSON_VALUE)
public ResultDTO initDoctorConfig(@Valid User param) {
do something...
}

@PostMapping(value = "/init", produces = MediaType.APPLICATION_JSON_VALUE)
public ResultDTO initDoctorConfig(int id) {
    do something...
}

@PostMapping(value = "/init", produces = MediaType.APPLICATION_JSON_VALUE)
public ResultDTO initDoctorConfig(@RequestParam int id) {
    do something...
}

@PostMapping(value = "/init", produces = MediaType.APPLICATION_JSON_VALUE)
public ResultDTO initDoctorConfig(@RequestBody int id) {
   do something...
}

2.JSON入参
2.1 单个或多个独立参数
@PostMapping(value = "/order/detail", produces = MediaType.APPLICATION_JSON_VALUE)
public ResultDTO getInfo(@RequestBody JSONObject jsonParams) {
long id = jsonParams.getLong("id");
String name = jsonParams.getString("name");
}
2.2 封装参数
@PostMapping(value = "/init", produces = MediaType.APPLICATION_JSON_VALUE)
public ResultDTO initConfig(@Valid @RequestBody RequestParam param) {
return initService.initConfig(param);
}
其中封装入参对象就是一个包含各入参函数对象的Object
这里同步做了数据校验,可忽略也可在其项目参考,其中包资源
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
@Data
public class RequestParam {

private long id;

@NotBlank(message = "姓名不能为空")
private String name;

@NotBlank(message = "年龄不能为空")
private String age;

}

相关文章
|
Docker 容器
docker使用阿里云镜像仓库
docker使用阿里云镜像仓库1:阿里云docker仓库 https://dev.aliyun.com/search.html 2:进去注册帐号后,点击自己的管理中心。 3:在管理中心点击加速器,右边面板会有你的加速地址,右边面板下面有详细设置步骤。
39468 1
|
JSON 前端开发 JavaScript
JSON parse error: Cannot deserialize value of type `java.lang.Integer` from Boolean value
这篇文章讨论了前端Vue应用向后端Spring Boot服务传输数据时发生的类型不匹配问题,即后端期望接收的字段类型为`int`,而前端实际传输的类型为`Boolean`,导致无法反序列化的问题,并提供了问题的诊断和解决方案。
JSON parse error: Cannot deserialize value of type `java.lang.Integer` from Boolean value
|
SQL Java 数据库连接
SpringBoot2.x系列教程31--SpringBoot整合H2内存数据库实现CRUD操作
前言 在上一章节中,我给大家详细讲解了H2数据库的安装配置,接下来我就带大家在Spring Boot中整合H2数据库,实现代码操作。 一. 以内嵌模式整合H2数据库 1. 创建Web项目 我们按照之前的经验,创建一个SpringBoot的Web程序,具体过程略,请参考下图创建。 2. 添加依赖包 然后在pom.xml文件中添加如下依赖包。 <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> <de
2269 1
SpringBoot2.x系列教程31--SpringBoot整合H2内存数据库实现CRUD操作
|
SQL 关系型数据库 Java
openGauss常用的客户端连接工具
openGauss常用的客户端连接工具
2373 0
|
存储 算法 安全
java手写实现区块链
目前市面上大多数都是源于国外大神的两篇关于java区块链的教程的生硬翻译,这就很容易导致一个问题,就是你明明把他代码跑起来了,最后却还不知道区块链是个啥,比如是如何做到去中心化的?又是如何做到不可篡改行的,以及比特币为什么越挖越少这些问题依然得不到很好的解释,本篇文章呢,依然源用的是那篇教程的代码,除了英文注释我会手动翻译成中文之外,其他的变量名什么的都不会改,毕竟人家思路是对的,没有必要重新造轮子,改个变量就说代码是我自己写的,那我和网上那些抄袭转载的人也没什么区别了。本篇文章并不是对作者源论文的机械翻译,只是借用了相关代码,希望大家看过之后会大致明白区块链具体是一项什么样的技术。
559 1
|
关系型数据库 MySQL Java
spring+mybatis启动NoClassDefFoundError异常分析三部曲之一:稳定重现问题
spring+mybatis启动失败:java.lang.NoClassDefFoundError: Could not initialize class org.springframework.beans.factor,本篇先将问题稳定复现
729 0
spring+mybatis启动NoClassDefFoundError异常分析三部曲之一:稳定重现问题
|
前端开发 Java 关系型数据库
MyBatis插入数据后返回主键id
最近开发全栈项目时,前端有个数据行可以被随便修改,所以必须给他一个标识记录该数据行,即向MySQL数据库中插入一条记录后,需要获取此条记录的主键id值返回给前端。
466 0
|
4月前
|
安全 Java API
Java日期处理完全指南(新手也能轻松掌握的Java时间格式化与日期API教程)
教程来源https://www.vpshk.cn/本文介绍Java 8引入的java.time包,详解LocalDateTime、LocalDate等类的使用,涵盖获取当前时间、格式化、解析字符串及日期运算,助你轻松掌握现代Java日期处理方法,适合初学者快速上手。
|
9月前
|
人工智能 JSON Java
Spring Boot 如何接收并处理不确定类型的请求参数?
在 Spring Boot 中,当需要处理结构不确定的 JSON 数据时,可以使用 `Map` 类型灵活接收键值对数据。对于更复杂的场景,可通过 Jackson 注解支持多态类型、自定义反序列化器,或在接收后动态解析 JSON 数据,提升处理灵活性和扩展性。
282 0

热门文章

最新文章