不定参数入参

简介: 本文介绍了API接口中参数传递的两种方式:非JSON格式与JSON格式入参。前者支持基本类型、封装对象等直接绑定;后者通过@RequestBody接收JSON数据,可结合@Valid进行参数校验,提升接口安全性与稳定性。

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 = "/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  封装参


其中封装入参对象就是一个包含各入参函数对象的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;

}


相关文章
|
5月前
|
存储 缓存 安全
One Trick Per Day
本文详解Java开发中六大易被忽视的陷阱:Map初始化容量设置不当、线程池滥用导致OOM、Arrays.asList的不可变性、遍历Map性能优化、SimpleDateFormat线程安全问题及并发更新加锁策略。通过源码分析与实例演示,揭示问题根源并提供Guava等最佳实践方案,助力提升系统稳定性与性能。
|
5月前
|
NoSQL Linux Shell
MongoDB单机部署
本文介绍MongoDB在Windows和Linux系统中的安装、配置与启动方法,包括下载地址、版本选择、解压安装、命令行及配置文件启动方式,并说明如何通过Mongo Shell和Compass图形化工具连接数据库,同时涵盖Linux环境下的服务部署、防火墙设置与安全关闭操作。
MongoDB单机部署
|
5月前
|
人工智能 Java 关系型数据库
[Blog]JPA实现分页需求(☆☆)
本任务要求在原有博客系统中实现分页查询功能,需掌握SpringBoot、MySQL、Maven及JPA基础知识。建议使用AI辅助开发,预计耗时1小时(AI助力)至4小时(手动实现)。注意:JPA为拓展内容,可灵活运用工具,重在实践与结果,无绝对标准答案。
[Blog]JPA实现分页需求(☆☆)
|
5月前
|
Java 调度
ScheduledThreadPoolExecutor解析
ScheduledThreadPoolExecutor适用于延时或周期性任务调度,继承自ThreadPoolExecutor但功能更强大。它通过ScheduledFutureTask实现任务的周期执行,并利用DelayedWorkQueue实现延迟控制,结合siftUp/siftDown维护任务顺序,通过take方法阻塞等待到期任务,从而实现精准的定时调度功能。
ScheduledThreadPoolExecutor解析
|
5月前
|
安全 Java 数据安全/隐私保护
通用权限管理模型
本文介绍了ACL和RBAC两种常见权限模型。ACL通过直接为用户或角色授权实现控制,简单直观;RBAC则基于角色分配权限,解耦用户与权限关系,更易管理。文中还详解RBAC的四类扩展模型(RBAC0-RBAC3),涵盖角色继承、职责分离等核心设计,帮助构建清晰的权限体系。
通用权限管理模型
|
5月前
|
缓存 监控 NoSQL
支付方案专题
本文记录了一次Java应用CPU使用率异常升至104%的排查过程。通过分析发现,问题由Full GC频繁触发导致,根源在于将大体积Excel数据以List<Map>结构加载至JVM内存,造成堆内存膨胀且长期驻留。结合JProfiler工具定位到大对象后,提出“治本”(移出内存存入Redis)与“治标”(减少冗余字段)两类解决方案,并总结了排查思路:优先检查JVM而非机器监控,善用工具分析堆快照,结合代码逻辑与现象验证推断。
 支付方案专题
|
5月前
|
安全 Java 开发者
过滤器链加载原理
本文深入解析Spring Security过滤器加载机制,通过源码分析DelegatingFilterProxy、FilterChainProxy与SecurityFilterChain的协作流程,揭示15个安全过滤器如何自动装配并执行,帮助开发者理解框架底层原理,为自定义认证页面奠定基础。
|
5月前
|
Java
类加载的常见加载顺序
本文通过Java代码示例,讲解静态代码块、局部代码块与构造器的执行顺序。静态代码块随类加载执行且仅一次,优先于主函数;局部代码块在每次创建对象时执行;构造器随后执行。总结:静态 > 局部 > 构造器。
|
5月前
|
运维 Kubernetes Java
物理部署图
物理部署图描述系统运行时的硬件配置与软件部署结构,展现节点、构件、物件及连接关系,常用于理解分布式系统。它从运维视角出发,揭示应用如何在硬件上部署运行,是开发与运维协同的重要工具。
|
5月前
|
Java 调度
线程池初探
线程池是一种管理多个线程的池化技术,避免频繁创建与销毁线程,提升性能。它统一调度线程执行任务,任务完成后线程不销毁,可复用。使用线程池能减少资源开销、控制并发数量、简化多线程编程。通过 `Executors` 可快速创建普通或调度型线程池,提交任务并管理生命周期,最后需调用 shutdown 关闭。

热门文章

最新文章