Избегая умолчанию-ошибка-контроллер от чванства API-интерфейс
Я использую swagger2 в моем проекте spring boot. Он работает хорошо, но мне нужно исключить basic-error-controller
из api. В настоящее время я использую следующий код, используя regex. Это работает, но есть отличный способ сделать это.
код :
@Bean
public Docket demoApi() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.regex('(?!/error.*).*'))
.build()
}
4 ответов
после поиска в google я получил решение от одной проблемы в GitHub,[вопрос] Как исключить основной контроллер ошибок из добавления в описание swagger?. Это можно сделать с помощью Predicates.not()
.
код выглядит следующим образом после использования Predicates.not()
.
@Bean
public Docket demoApi() {
return new Docket(DocumentationType.SWAGGER_2)//<3>
.select()//<4>
.apis(RequestHandlerSelectors.any())//<5>
.paths(Predicates.not(PathSelectors.regex("/error.*")))//<6>, regex must be in double quotes.
.build()
}
прошло много времени, но если у кого-то есть такая же проблема, вы можете сделать это, предоставив селектор для RestController:
new Docket(SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
.paths(PathSelectors.any())
.build();
имея в виду, что ваши контроллеры аннотируются @RestController
лучший способ ограничить конечные точки, отображаемые документацией swagger, - это сделать следующее:
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(paths())
.build().apiInfo(metadata());
}
private Predicate<String> paths() {
return or(
regex("/firstContext.*"),
regex("/secondContext.*"));
}
private ApiInfo metadata() {
return new ApiInfoBuilder()
.title("SomeTitle")
.description("SomeDescription")
.build();
}
таким образом, каждая конечная точка, которая не начинается с контекстов метода paths (), не будет отображаться swagger
я столкнулся с той же проблемой. Я сделал это.
java
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.xxx.xxx"))
.paths(PathSelectors.any())
.build();
}