在 OpenApi 3 中展平 RequestParam 对象

Sum*_*mit 5 api-doc swagger spring-boot swagger-2.0 openapi

我正在从 swagger 2 迁移到 OpenApi 3。

Swagger 2 示例代码


    @ApiOperation(value = "", nickname = "")
        @GetMapping
          public List<Employee> findEmployees(@Valid Dto dto) {
                return employeeService.findEmployees(dto);
                }

Run Code Online (Sandbox Code Playgroud)

OpenApi 3 代码


    @Operation(summary = "")
        @GetMapping
          public List<Employee> findEmployees(@Valid Dto dto) {
                return employeeService.findEmployees(dto);
                }

Run Code Online (Sandbox Code Playgroud)

DTO类


    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public class Dto {
        private String status;
        private String name;
        private String destination;
    }

Run Code Online (Sandbox Code Playgroud)

在这两种情况下,swagger-ui 的生成存在显着差异。

Swagger 2 将 DTO 对象显示为扁平化为单个查询参数

Swagger 2 ui 中发生单个查询参数时对象的图像扁平化

而 OpenApi 3 创建了一个 JSON 对象

图像对象不会变平但会创建一个 json 对象

我想在 OpenApi 3 中拥有像以前在 Swagger 2 中那样的扁平化行为。有什么方法可以在 OPENAPI 3 中实现相同的效果。

Sum*_*mit 5

经过一些研究,我发现新版本的 openapiui 依赖项已于 2020 年 4 月 12 日发布,它解决了我的问题。从版本1.3.2 开始可用。

<!-- https://mvnrepository.com/artifact/org.springdoc/springdoc-openapi-ui -->
<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-ui</artifactId>
    <version>1.3.2</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

在查询参数对象之前使用 Annotation @ParameterObject解决它。


   @Operation(summary = "")
        @GetMapping
          public List<Employee> findEmployees(**@ParameterObject** @Valid Dto dto) {
                return employeeService.findEmployees(dto);
                }

Run Code Online (Sandbox Code Playgroud)