Сглаживание объекта RequestParam в OpenApi 3 - PullRequest
2 голосов
/ 17 апреля 2020

Я мигрирую из Swagger 2 в OpenApi 3.

Код образца Swagger 2


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

Код OpenApi 3


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

Класс DTO


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

Существует значительная разница в генерации Swagger-UI в обоих случаях.

Swagger 2 показывает объект DTO в виде отдельных параметров запроса :

Image Сглаживание объекта в виде отдельных параметров запроса происходит в Swagger 2 ui

в то время как OpenApi 3 создает JSON объект :

Изображение Объект не выравнивается, но создает json объект

Я хочу, чтобы поведение OpenApi 3 было таким же, как и в Swagger 2. Есть ли способ добиться того же в OPENAPI 3.

1 Ответ

1 голос
/ 03 мая 2020

После некоторых исследований я обнаружил, что новая версия зависимости openapiui была выпущена 12 апреля 2020 года, и она решает мою проблему в руках. Начиная с версии 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>

Использование аннотации @ ParameterObject до того, как объект параметра запроса ее решит.


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

...