前言
我的项目 api 编写有文档然而调试麻烦,须要借助 postman/apipost 等第三方工具,须要在开发框架中内置接口治理及调试性能减少开发便捷性
pom 配置
阐明,框架应用 springboot 版本为 2.0.0.RELEASE
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>2.0.3</version>
</dependency>
拦截器配置
在我的项目中个别会存在鉴权拦截器,须要将 knife4j 相干资源放行
anonymousAccessList.add("/swagger-resources");
anonymousAccessList.add("/swagger-resources/configuration/ui");
anonymousAccessList.add("/v2/api-docs");
anonymousAccessList.add("/v2/api-docs-ext");
anonymousAccessList.add("/doc.html");
anonymousAccessList.add("/webjars/*");
anonymousAccessList.add("/favicon.ico");
Config 配置
@Configuration
@EnableSwagger2
@EnableKnife4j
@Import(BeanValidatorPluginsConfiguration.class)
public class SwaggerConfiguration {@Value("${spring.profiles.active}")
private String active;
@Bean(value = "frameAPI")
@Conditional({SwaggerProjectCondition.class})
public Docket frameAPI() {Docket docket = new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo("xxx", "xxx"))
// 分组名称
.groupName("xxx")
.select()
// 这里指定 Controller 扫描包门路
.apis(RequestHandlerSelectors.basePackage("com.xxx.xxx"))
.paths(PathSelectors.any())
.build();
docket.enable(!active.equals("pro"));
return docket;
}
private ApiInfo apiInfo(String appTag, String docName) {return new ApiInfoBuilder()
.title(appTag + "api")
.description(docName)
.contact("admin")
.version("1.0")
.build();}
}
注:因为应用 knife4j 版本不是最新,所以通过 docket.enable 代码配置的形式管制生产环境敞开文档资源的拜访