swagger
springfox
Поиск…
Переопределение сообщений ответа по умолчанию
Springfox определяет набор сообщений ответа по умолчанию, которые применяются ко всем контроллерам API по умолчанию. Сюда входит, например, 201 - Created
и 204 - No Content
, а также несколько ответов 40x
. Могут быть случаи, когда сообщения ответа по умолчанию не применяются для вашего API. У вас есть встроенные возможности для решения этой проблемы:
- Вы можете включить ответное сообщение по умолчанию и определить свой собственный, используя аннотацию
@ApiResponses
. - Вы можете определять свои собственные ответы на глобальные
Поворот сообщений ответа по умолчанию
docket.useDefaultResponseMessages(false);
Теперь вы можете настроить индивидуальные ответные сообщения на уровне каждого контроллера. Например
@ApiResponses(value = {
@ApiResponse(code=400, message = "This is a bad request, please stick to the API description", response = RestApiExceptionModel.class),
@ApiResponse(code=401, message = "Your request cannot be authorized.", response = RestApiExceptionModel.class)
})
Установите свои собственные ответы по умолчанию
ModelRef errorModel = new ModelRef("RestApiExceptionModel");
List<ResponseMessage> responseMessages = Arrays.asList(
new ResponseMessageBuilder().code(401).message("Unauthorized").responseModel(errorModel).build(),
new ResponseMessageBuilder().code(403).message("Forbidden").responseModel(errorModel).build(),
new ResponseMessageBuilder().code(404).message("NotFound").responseModel(errorModel).build());
docket.globalResponseMessage(RequestMethod.POST, responseMessages)
.globalResponseMessage(RequestMethod.PUT, responseMessages)
.globalResponseMessage(RequestMethod.GET, responseMessages)
.globalResponseMessage(RequestMethod.DELETE, responseMessages);
Настройка springfox с использованием swagger-ui в весенней загрузке
- Получите springfox в своем приложении, используя Maven или Gradle
- Создайте новый компонент Docket в своем приложении и настройте его
- Документируйте свой API в соответствии с вашими потребностями
- Запустите свою заявку и посмотрите свои достигнутые результаты.
# 1 Получение Springfox с Maven
Добавьте зависимости для swagger2 и swagger-ui в свой pom.xml
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.6.0</version>
</dependency>
# 2 Настройте приложение для использования swagger
Добавьте аннотацию @EnableSwagger2
в ваш аннотированный основной класс @SpringBootApplication
и создайте компонент Docket Dread в этом (или любом другом) классе конфигурации.
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
Эта конфигурация будет генерировать документацию API по всем контроллерам весов в вашем приложении. Если вам необходимо ограничить создание документации API для определенных контроллеров, вы можете выбрать между различными RequestHandlerSelectors. Например, вы можете создать свою документацию API на основе вашей структуры пакета, используя RequestHandlerSelectors.basePackage("your.package.structure")
или на основе определенных классов, которые вы аннотировали с помощью RequestHandlerSelectors.withClassAnnotation(Api.class)
.
# 3 Документируйте свой API
Используйте аннотации, как описано в документации , для улучшения ваших классов и методов контроллера с дополнительной информацией. Чтобы описать общую информацию вашего api, например, общее название, описание или версию, используйте ApiInfoBuilder () в вашем Docket-компоненте.
Пример определения метаданных с помощью ApiInfoBuilder:
// Within your configuration class
public static ApiInfo metadata(){
return new ApiInfoBuilder()
.title("Your Title")
.description("Your Description")
.version("1.x")
.build();
}
// Within your method that definies the Docket bean...
docket.apiInfo(metadata());