SpringBoot. 不定参数入参

简介: 本文介绍了Java后端接口开发中常见参数接收方式,包括非JSON格式的不定参数、基本类型传参,以及JSON格式的JSONObject解析和封装对象入参。重点讲解了@RequestBody、@RequestParam等注解的使用场景,并结合@Valid实现参数校验,提升接口安全性与稳定性。

. 不定参数入参
1.非JSON格式入参
Java
运行代码
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@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 单个或多个独立参数
Java
运行代码
复制代码
1
2
3
4
5
@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 封装参数
Java
运行代码
复制代码
1
2
3
4
@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;
Java
运行代码
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
@Data
public class RequestParam {

private long id;

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

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

}

相关文章
|
1月前
|
编译器 程序员 Linux
实用工具:VS Code 配置 Markdown 编译器全指南
本文介绍如何在VS Code中配置高效Markdown写作环境,通过启用内置预览、安装Markdown All in One与Markdown Preview Enhanced插件,并配置Princexml实现PDF等格式导出,全面提升编辑、预览与输出效率,适合程序员、学生及内容创作者使用。
537 2
实用工具:VS Code 配置 Markdown 编译器全指南
|
2月前
|
存储 SQL 分布式计算
手把手教你搞定大数据上云:数据迁移的全流程解析
本文深入探讨了企业数据迁移的核心价值与复杂挑战,重点分析了离线大数据平台在物理传输、系统耦合与数据校验三方面的难题。文章系统阐述了存储格式、表格式、计算引擎等关键技术原理,并结合LHM等工具介绍了自动化迁移的实践演进,展望了未来智能化、闭环化的数据流动方向。
653 14
手把手教你搞定大数据上云:数据迁移的全流程解析
|
2月前
|
缓存 运维 监控
一次内存诊断,让资源利用率提升 40%:揭秘隐式内存治理
阿里云云监控 2.0 推出 SysOM 底层操作系统诊断能力,基于 eBPF + BTF 协同分析,无需侵入业务,即可一键完成从物理页到文件路径、再到容器进程的全栈内存归因,让“黑盒内存”无所遁形。
612 86
|
1月前
|
JSON 安全 Java
SpringBoot.鉴权
本文介绍如何在Spring Boot项目中结合JWT与Spring Security实现安全鉴权。涵盖Token生成与验证、自定义认证流程、角色权限控制(RBAC),并通过过滤器实现登录拦截与请求认证,保障接口安全。
127 2
|
1月前
|
负载均衡 Java 应用服务中间件
Gateway服务网关
Gateway服务网关是微服务架构的统一入口,具备路由转发、权限控制、限流及负载均衡等核心功能。基于SpringCloud Gateway可实现高性能响应式编程,支持丰富的断言与过滤器工厂,并可通过全局过滤器扩展自定义逻辑,有效解决跨域等问题,是微服务治理的关键组件。
133 0
|
1月前
|
数据挖掘 C++ 计算机视觉
Python:ImportError:DLL loadfailed while importing onnxruntime_pybind11_state: 动态链接库(DLL)初始化例程失败 报错解决
在进行文件夹内人脸识别与对比聚类时,遇到onnxruntime库报错,通常因版本不兼容或环境冲突导致。本文整理了五种解决方案:降级onnxruntime至1.14.1、重装库、区分GPU/CPU版本、安装Visual C++运行库、创建Python虚拟环境。通过版本匹配与环境隔离,有效解决DLL初始化失败等问题,提升项目稳定性。
669 8
|
1月前
|
存储 弹性计算 人工智能
阿里云 8 核 16G 云服务器 ECS 租赁价格收费标准及 CPU 型号详解参考
阿里云 8 核 16G 云服务器 ECS 的租赁价格受实例规格、CPU 型号、购买时长等因素影响,不同配置的官方参考价与优惠后价格存在差异,以下是详细的收费标准及相关说明。阿里云 8 核 16G 云服务器 ECS 凭借丰富的实例规格,搭配不同高性能处理器与优化架构,在计算、存储、网络等核心性能维度表现出色,且适配多种业务场景,同时兼具稳定性与弹性优势,具体性能可从以下几方面结合主流实例规格详细分析:
|
1月前
|
Web App开发 JavaScript 前端开发
SpringBoot.跨域处理
跨域指协议、域名、端口不同时的资源请求限制。本文详解CORS解决方案,包括@CrossOrigin注解、全局配置WebMvcConfigurer及Filter拦截器实现,支持指定域名跨域访问,保障前后端分离架构下安全通信。
68 2
|
1月前
|
人工智能 安全
一年输送旅客数千万次,浦东国际机场的效率秘密藏在这个智能体里
秋冬旅游高峰,浦东机场迎百万客流挑战。蚂蚁百宝箱推出“浦东国际机场”智能体,集成航班查询、停车导航、交通路线、餐饮酒店等一站式服务,实现“出发—到港”全链路智慧出行,提升旅客体验与机场运营效率。
151 2
|
1月前
|
SQL 容灾 数据库
分布式事务Seata
Seata是阿里开源的分布式事务解决方案,提供XA、AT、TCC、SAGA四种模式,解决微服务架构下的跨库跨服务事务一致性问题。通过TC(事务协调者)、TM、RM三大角色实现全局事务管理,支持高可用部署与无缝集成Spring Cloud,助力系统实现最终一致或强一致性事务。
200 0