You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用springdoc-openapi将对象转为Swagger独立查询参数

在springdoc-openapi中将对象参数拆分为独立查询参数生成Swagger文档

springdoc-openapi完全支持将对象的字段拆分为独立查询参数展示在Swagger文档中,核心是使用@ParameterObject注解,具体实现步骤如下:

  • 步骤1:引入正确的springdoc依赖
    如果是Spring Boot项目,推荐引入对应Web类型的starter依赖(示例为WebMVC场景):

    <!-- Maven依赖示例 -->
    <dependency>
        <groupId>org.springdoc</groupId>
        <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
        <version>v2.2.0</version> <!-- 版本需匹配Spring Boot版本:Spring Boot 3.x用2.x系列,2.x用1.x系列 -->
    </dependency>
    
  • 步骤2:定义查询参数DTO并添加注解
    为DTO的字段添加@Parameter可自定义Swagger描述,后续在接口方法的对象参数上标记@ParameterObject即可触发拆分:

    public class UserQueryParams {
        @Parameter(description = "用户ID")
        private Long id;
        @Parameter(description = "用户名")
        private String username;
        @Parameter(description = "注册起始时间,格式:yyyy-MM-dd HH:mm:ss")
        private LocalDateTime registerStartTime;
    
        // 必须提供getter方法,springdoc通过getter识别字段
        public Long getId() { return id; }
        public void setId(Long id) { this.id = id; }
        public String getUsername() { return username; }
        public void setUsername(String username) { this.username = username; }
        public LocalDateTime getRegisterStartTime() { return registerStartTime; }
        public void setRegisterStartTime(LocalDateTime registerStartTime) { this.registerStartTime = registerStartTime; }
    }
    
  • 步骤3:在接口方法中使用该对象参数
    在Controller接口方法中,将DTO作为参数并标记@ParameterObject:

    @RestController
    @RequestMapping("/users")
    public class UserController {
        @GetMapping
        public List<UserVO> getUsers(@ParameterObject UserQueryParams queryParams) {
            // 业务逻辑实现
            return userService.listUsers(queryParams);
        }
    }
    

完成上述配置后,生成的Swagger文档会把id、username、registerStartTime作为独立查询参数展示,效果和直接在方法中定义多个参数完全一致。

补充说明:

  • 无需额外配置全局参数解析,springdoc会自动处理@ParameterObject标记的对象
  • 若DTO字段未添加@Parameter注解,springdoc会默认以字段名作为参数描述
  • 必须保证DTO字段有对应的getter方法,否则springdoc无法识别字段

内容的提问来源于stack exchange,提问作者Miguel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 18:31:07