赞
踩
之前项目中一直在使用 swagger 生成后台接口文档,很好用,至少比之前用 word 写接口文档 postman 调试接口方便多了。swagger 提供了一套前端页面,但是需要在代码中加入注解,如: @Api
@ApiOperation
等,耦合度比较高,但使用起来很方便。对我强迫症的我来说,swagger-ui 页面奇丑无比,给我的感觉就是特别乱,并且没办法保存常用的参数,使用起来很不方便。
这篇文章来介绍 knife,是 swagger 的增强版。该UI增强包主要包括两大核心功能:文档说明 和 在线调试
功能不过多介绍,直接上图演示:
springboot 基本框架搭建就不过多介绍了,直接演示 springboot 整合 knife 需要改动的配置。
由于是 springfox-swagger
的增强UI包,所以基础功能依然依赖 swagger
,springfox-swagger
的 jar 包必须引入。然后引入 knife4j-spring-ui
替代原来的 swagger-ui
。
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-ui</artifactId>
<version>3.0.2</version>
</dependency>
Swagger2Config 文件内容如下:
@Configuration @EnableSwagger2 public class Swagger2Config { @Bean public Docket createRestApi() { ApiInfo apiInfo = new ApiInfoBuilder() .title("台接口") .description("这里描述内容") .contact(new Contact("Liuyanmin", "", "")) .termsOfServiceUrl("http://localhost:60000/") .version("1.0") .build(); return new Docket(DocumentationType.SWAGGER_2) .host("http://localhost:60000/") .groupName("后台接口") .apiInfo(apiInfo) .select() .apis(RequestHandlerSelectors.basePackage("com.example.controller")) .paths(PathSelectors.any()) .build(); } }
访问地址,knife
默认访问地址是:http://${host}:${port}/doc.html
swagger-ui
的样式页面还是可以访问的,地址:http://${host}:${port}/swagger-ui.html
,这个不建议使用了,页面太丑了,了解一下就可以了。
SpringBoot 中访问 doc.html
或 swagger-ui.html
报404的解决办法
@Configuration
public class IntercpetorConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// 设置swagger静态资源访问
registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
Springfox-swagger
默认提供的接口和依赖的资源文件需要在拦截器或权限验证中过滤掉,过滤内容如下:
/swagger-ui.html,/swagger-resources/**,/csrf,/webjars/**
若项目中之前使用过 swagger
生成接口文档,改成 knife
其实很简单,只需要两步:
swagger-ui
jar包替换成 knife4j-spring-ui
http://${host}:${port}/swagger-ui.html
改成 http://${host}:${port}/doc.html
就这么简单。
还有更多优秀开源的接口文档生成工具,感兴趣的可以自己看一下。
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。