4. 不定参数入参

简介: 本文介绍了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 = "/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;
}
相关文章
|
7月前
|
敏捷开发 Java 测试技术
为什么要单元测试
本文探讨单元测试在现代软件开发中的核心价值,打破“写单测费时”的误区。通过测试金字塔模型,阐述单测作为地基对提升代码质量、调试效率和研发信心的关键作用,助力项目从“踩刹车”变为“加速跑”。
104 0
为什么要单元测试
|
7月前
|
JSON Java 数据格式
SpringBoot使用汇总
本课程系统讲解Spring Boot核心知识,涵盖环境搭建、JSON处理、日志配置、全局异常处理、AOP切面编程及MyBatis、Redis等主流框架集成,并结合实际项目搭建完整开发架构,助你快速掌握微服务开发技能。
|
7月前
|
敏捷开发 Dubbo Java
需求开发人日评估
本文介绍敏捷开发中工时评估的方法,重点讲解“人日”概念及开发、自测、联调、测试、发布各阶段的参考周期。结合常见需求如增删改查、Excel导入导出、跨服务调用等,提供具体人日估算建议,并附实际案例参考,助力团队科学排期。
179 0
|
7月前
|
机器学习/深度学习 安全 算法
基于yolov8的安全帽检测系统
本研究基于YOLOv8目标检测算法,构建安全帽佩戴智能识别系统,针对建筑、矿山等高危作业场景,实现对人员头部防护的实时监控与预警。系统结合深度学习与计算机视觉技术,通过高效标注数据集、优化模型结构,提升检测精度与速度,在1080P图像下可达35FPS以上,满足工业级实时性需求。相比传统人工巡查,显著降低漏检率,提高监管效率,助力高危行业向智能化安全管理转型,具有重要应用价值与推广前景。
|
7月前
|
移动开发 小程序 前端开发
多端陪玩系统搭建:uni-app+PHP 对接阿里云服务(小程序 / 公众号 / APP)
基于uni-app与阿里云的多端陪玩系统,集成OSS、短信、直播RTS及支付功能。通过STS临时凭证、Redis防刷、JWT鉴权保障安全,支持小程序、H5、APP多端适配,实现低延迟音视频通话与高并发稳定运行,助力高效运营。(239字)
416 0
|
7月前
|
安全 数据库 数据安全/隐私保护
RememberMe简介及用法
RememberMe功能并非简单记住用户名密码,而是通过服务端生成令牌(Token)存于Cookie中,实现关闭浏览器后仍保持登录状态。但直接使用明文令牌有安全风险,可通过将Token持久化到数据库并增加二次校验机制,提升系统安全性与稳定性。
|
7月前
|
安全 Java 应用服务中间件
4.认识SpringSecurity
Spring Security 是 Spring 生态中成熟的安全框架,核心功能包括认证(支持表单、OAuth2、SAML 等多种方式)、鉴权(URL、方法级、SPEL、RBAC等)及防护 CSRF 等攻击。其架构基于过滤器链,通过 FilterChainProxy、DelegatingFilterProxy 实现安全逻辑嵌入与委托,支持多安全过滤链与异常处理机制,灵活且扩展性强。
118 0
|
7月前
|
存储 NoSQL 关系型数据库
|
7月前
|
存储 数据库
数据库设计三范式
本文介绍了数据库设计中的三范式(1NF、2NF、3NF),通过实例讲解各范式的要求与应用场景。第一范式要求字段原子性,不可再分;第二范式要求消除部分依赖,确保主键决定所有非主键字段;第三范式消除传递依赖。同时指出,范式是参考而非绝对准则,实际设计应结合业务需求灵活处理,以降低维护成本、提升效率。
194 0
|
7月前
|
存储 NoSQL 关系型数据库
MongoDB相关概念
MongoDB是一款高性能、无模式的文档型数据库,适用于高并发、海量数据、高扩展性场景。支持灵活的JSON-like文档存储,适用于社交、游戏、物联网等应用,具备高可用、易扩展、丰富查询等优势。
MongoDB相关概念