Запретить Swagger автоматически добавлять некоторые модели - PullRequest
0 голосов
/ 14 марта 2019

Я создаю интерфейс REST, используя Spring Boot Framework. Затем я использую Swagger версии 2.9.2 для генерации документации. Как видно из фотографии ниже, Swagger автоматически обнаруживает множество моделей.

Models

Однако большинство из них являются избыточными. Среди них необходим только ResponseMessage, остальные - просто стандартный класс Java.

Итак, мой вопрос: как я могу сказать Swagger, какие модели выставлять ?

Вот моя конфигурация Swagger и фрагмент кода моего контроллера.

@Bean
public Docket api() {
    return new Docket(DocumentationType.SWAGGER_2)
            .select()
            .apis(RequestHandlerSelectors.basePackage("my.package"))
            .paths(PathSelectors.any())
            .build()
            .apiInfo(API_INFO)
            .useDefaultResponseMessages(false);
}

Контроллер:

@PostMapping(value = "/import", produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public ResponseEntity<?> importData(HttpServletRequest request) {

    // processing...

    return ResponseEntity.created(uri)
        .body(new ResponseMessage(HttpStatus.CREATED, "Your data is being processed"));
}

1 Ответ

0 голосов
/ 14 марта 2019

Вы можете использовать скрытый атрибут @ApiModelProperty, чтобы скрыть любое конкретное свойство модели. Там нет глобальных настроек для этого.

Как только вы объявите базовый пакет для сканирования сваггера, swagger сгенерирует определения для всех компонентов в пакете из коробки для вас. Однако, при правильном использовании набора swagger annotations, вы можете переопределить / настроить документацию swagger.

Пожалуйста, следуйте этим замечательным учебникам ( 1 , 2 ), чтобы ознакомиться с наиболее полезными аннотациями и использованием.

@ Api, @ApiOperation, @ApiResponses, @ApiParam, @ApiIgnore, @ApiModel, @ApiModelProperty и т. Д.

...