【发布时间】:2016-01-01 17:09:45
【问题描述】:
【问题讨论】:
标签: swagger-ui swagger-2.0 springfox
【问题讨论】:
标签: swagger-ui swagger-2.0 springfox
您可以限制请求处理程序选择器仅扫描您项目的包:
return new Docket( DocumentationType.SWAGGER_2)
.select()
.apis( RequestHandlerSelectors.basePackage( "your package" ) )
...
【讨论】:
java下方的文件夹名称
我认为,最优雅的解决方案是仅将 @RestController 控制器包含在 swagger 中,唯一需要记住的是,使用该注释对所有 REST 控制器进行注释:
new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
.paths(PathSelectors.any())
.build();
由于BasicErrorController 仅使用@Controller 进行注释,因此swagger 将避免在定义文件中使用BasicErrorController。当然,您可以使用自定义注释而不是 @RestController 将您的 REST 控制器标记为符合 swagger 条件的控制器。
【讨论】:
可以使用 Predicate.not() 来完成。
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.paths(Predicate.not(PathSelectors.regex("/error.*")))
.build();
}
【讨论】:
例如,如果您的父包是 com.app.microservice
package com.app.microservice;
然后使用下面的代码它只会显示包内的控制器并禁用/排除其他控制器
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.app.microservice"))
.build();
}
【讨论】:
U也可以使用springfox-swagger2注解。 springfox.documentation.annotations.ApiIgnore
@ApiIgnore
public class ErrorController {
这将从文档中排除该类。
【讨论】:
BasicErrorController 是库函数,所以不容易用@ApiIgnore注解
这可以通过将@Bean 定义移动到主类(带有@SpringBootApplication 的类)并在basePackage() 中使用其this.getClass().getPackageName() 来完成:
@Bean
public Docket swagger() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage(this.getClass().getPackageName()))
.paths(PathSelectors.any())
.build()
.useDefaultResponseMessages(false);
}
【讨论】:
我的问题是我忘了用@Bean 注释 Docket api() 方法。
【讨论】:
在尝试了很多解决方案之后,对我来说没有任何效果。最后我知道了最基本的事情,即确保你定义了 swagger 配置文件和你的主要方法文件的文件应该在 同一个包 .
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.paths(Predicates.not(PathSelectors.regex("/error.*")))
.build();
}
【讨论】: