赞
踩
现项目中我们常常直接用Swagger来让项目展示接口文档体验,随着项目后续的发展,大家对Swagger对原生的界面不是很满意,于是就出现了一个新的Swagger扩展项目,叫swagger-bootstrap-ui,swagger-bootstrap-ui是springfox-swagger的增强UI实现,为Java开发者在使用Swagger的时候,能拥有一份简洁、强大的接口文档体验。
作者对swagger-bootstrap-ui不断的迭代,在1.9.6的版本时,作者把swagger-bootstrap-ui项目重命名为Knife4j
,目标是希望它能像一把匕首一样小巧,轻量,并且功能强悍,更名也是希望把她做成一个为Swagger接口文档服务的通用性解决方案,不仅仅只是专注于前端Ui前端。
该UI增强包主要包括两大核心功能:文档说明 和 在线调试
SpringToolSuite4
Maven
Spring Boot 2.x + Jdk1.8+knife4j2.0.6
本文用的是Springboot2的版本
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.3.RELEASE</version> <relativePath /> <!-- lookup parent from repository --> </parent> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version>2.0.6</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>20.0</version> <scope>compile</scope> </dependency>
注意:只需要引入knife4j-spring-boot-starter即可,它会把其它的依赖都加载进来,如要Swagger的核心包也会加载进来
我们看下他的依赖包,
server:
port: 8089
#配置swagger配置
knife4j:
basic:
username: admin
password: 123
enable: true #开启认证
production: false #默认是false ,屏蔽所有Swagger的相关资源
enable: true #是否开启swagger
@Configuration @EnableSwagger2WebMvc @EnableKnife4j @ConditionalOnExpression("${knife4j.enable}") //开启访问接口文档的权限 **knife4j.enable是在yml配置文件中配置为true** public class SwaggerConfiguration { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select() .apis(RequestHandlerSelectors.basePackage("com.bitter.controller")).paths(PathSelectors.any()).build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder().title("Spring Boot中使用Swagger2构建RESTful APIs(带认证)") .description("更多Spring Boot相关文章请关注:https://blog.csdn.net/elvishehai") .termsOfServiceUrl("https://blog.csdn.net/elvishehai").version("1.0").build(); } }
@EnableSwagger2WebMvc
原先是用@EnableSwagger2来做注解的,最新版本直接使用@EnableSwagger2WebMvc
来做注解,暂时可以把他理解为功能就是一样的
@EnableKnife4j
API接口文档的开关
@RestController
@Api(tags = "Swagger")
public class BitterController {
@ApiOperation(value = "hello", notes = "")
@GetMapping("hello")
public String hello() {
return "hello world";
}
}
输入用户名和密码才可以访问接口
输入用户和密码后admin/123
测试接口,返回接口定义的数据,测试成功
gitee下见springboot-swagger-auth
以上是简单的SpringBoot2与Swagger(knife4j)的最新版本整合,只是为了测试该版本的功能使用,同时有了该认证的功能后,许多的漏洞工具也无法扫描出漏洞,对系统来说更安全。不过对于部署系统到生产系统,为了接口安全,可以屏蔽所有Swagger的相关资源,在配置文件中配置production: true
就可以。
欢迎有问题及时交流~
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多交流。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。