前言
我的项目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代码配置的形式管制生产环境敞开文档资源的拜访