создание документов Spring API с использованием чванства над конечными точками GET со сложными объектами - PullRequest
0 голосов
/ 19 июня 2020

У меня есть приложение для загрузки Spring, и я использую springfox swagger для создания документации по API.

У меня есть конечная точка поиска со сложным вложенным объектом

@GetMapping("/search")
public Something search(SearchDTO input) {
}

public class SearchDTO {
    private SearchFilterDto filters;
    private Page page;
    private Sort sort;
}

public class SearchFilterDto {
    private String name;
}

... other DTOS; getters and setters are omitted, default constructor

    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.9.2</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.9.2</version>
    </dependency>

После запуска app, сгенерированный do c выглядит так:

enter image description here

Есть идеи, как я могу помочь Springfox сгенерировать документацию для моего сложного объекта?

1 Ответ

0 голосов
/ 22 июня 2020

Я обнаружил проблему.

В моих DTO было несколько геттеров, которые возвращают Optional<Something>. Добавив .genericModelSubstitutes(Optional.class) в свою конфигурацию swagger, мне удалось получить конфигурацию, которую я искал.

@Bean
public Docket api() {
    return new Docket(DocumentationType.SWAGGER_2)
            .select()
            .apis(RequestHandlerSelectors.any())
            .paths(PathSelectors.any())
            .build()
            .genericModelSubstitutes(Optional.class)  // added this line
            .securityContexts(Lists.newArrayList(securityContext()))
            .securitySchemes(Lists.newArrayList(apiKey()));
}
...