> 文章列表 > 简单的配置Sawgger+knife4j完成API测试功能

简单的配置Sawgger+knife4j完成API测试功能

简单的配置Sawgger+knife4j完成API测试功能

目的:减少postman的使用,以及生成对应的接口文档

1、添加依赖

基于自身spring boot 版本2.7.X

我选择的是:

        <dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version></dependency><!--Knife4j swagger中文 --><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>3.0.3</version></dependency><!-- 引入swagger-bootstrap-ui包 --><dependency><groupId>com.github.xiaoymin</groupId><artifactId>swagger-bootstrap-ui</artifactId><version>1.8.5</version></dependency>

如果Spring Boot 在2.6以前 fox和 knife4j要在2.9.x左右才可以

2、配置在application.properties中配置信息(application.yaml同理)

swagger路径配置是springboot 2.6版本以上才写的。

#swagger路径配置 否则报错空指针
spring.mvc.pathmatch.matching-strategy=ANT_PATH_MATCHER
#增强knife4j,也可以不增强 就不用写下面的内容
knife4j.enable=true

3、生成Swagger的配置信息

开启了多个注解(我直接复制修改部分配置名称即可)

/*开启swagger2*/
@EnableSwagger2
@Configuration
/*开启mvc访问*/
@EnableWebMvc
/*开启swagger增强工具*/
@EnableKnife4j
/*只有开发可以访问*/
@Profile({"dev"})
public class Swagger {/*创建API 应用* apiInfo() 增加API 相关信息* 通过select()函数返回一个ApiSelectorBuilder实例,用来控制哪些接口暴露Swagger 来 展示* */private final OpenApiExtensionResolver openApiExtensionResolver;@Autowiredpublic Swagger(OpenApiExtensionResolver openApiExtensionResolver) {this.openApiExtensionResolver = openApiExtensionResolver;}/*自己定义名字*/@Bean(value = "xxxAPI")public Docket xxxAPI() {Docket docket=new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).host("http://localhost:ip/port").select()/*扫描路径 我的是controller层*/.apis(RequestHandlerSelectors.basePackage("xxx.xxx.xxx.controller")).paths(PathSelectors.any()).build().extensions(openApiExtensionResolver.buildSettingExtensions());return docket;}private ApiInfo apiInfo() {return new ApiInfoBuilder().title("API接口文档").description("仅用于项目开发/测试/对接使用").termsOfServiceUrl("")//编写你的联系方式 name url email.contact(new Contact("xxx", "http://www.baidu.com", "12313@163.com")).version("1.1").build();}
}

4、配置MVC配置信息,如果有拦截器记得打开权限

@Configuration
public class MyWebMvcConfig implements WebMvcConfigurer {@ResourceMyInterceptor myInterceptor;/*** 放行Swagger*/private static final String[] SWAGGER_WHITELIST = {"/swagger-ui.html/**","/swagger-ui/**","/swagger-resources/**","/v2/api-docs","/v3/api-docs","/v3/api-docs/swagger-config","/webjars/**",/*knifej*/"/doc.html",};/*通过注册中心配置拦截器*/@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(myInterceptor).excludePathPatterns("/user/login").excludePathPatterns(SWAGGER_WHITELIST).addPathPatterns("/**");}//该方法是为了访问knife4j的页面,否则会提示404报错@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");}
}

如果没有拦截器也请一定要记得加上addResourceHandlers方法,目的是为了访问doc.html页面

5、自身根据业务配置相应注解

常用注解

 我是基于Swagger2的,因此在控制层写了部分注解

 启动程序后在http:ip/port/doc.html中即可看到内容

点击对应的控制层能看到相关内容

生成API文档并支持下载

 暂时可以满足我的要求

sharp fonts