文章目录
系列文章:
swagger-springboot详解
一般在使用 Spring Boot 开发前后端分离项目的时候,都会用到 Swagger。Swagger 是一个规范和完整的框架,用于生成、描述、调试和可视化 RESTful 风格的 Web API 服务框架。
但随着系统功能的不断增加,接口数量的爆炸式增长,Swagger 的使用体验就会变得越来越差,比如请求参数为 JSON 的时候没办法格式化,返回结果没办法折叠,还有就是没有提供搜索功能。
刚好最近发现 Knife4j 弥补了这些不足,赋予了 Swagger 更强的生命力,于是就来给大家安利一波。
1、关于 Knife4j
Knife4j 的前身是 swagger-bootstrap-ui,是 springfox-swagger-ui 的增强 UI 实现。swagger-bootstrap-ui 采用的是前端 UI 混合后端 Java 代码的打包方式,在微服务的场景下显得非常臃肿,改良后的 Knife4j 更加小巧、轻量,并且功能更加强大
2:由swagger-ui变为Knife4j
如果项目中之前使用过 Swagger 生成接口文档,切换到 Knife4j 可以说是非常的丝滑,只需要两步:
在 pom.xml 文件中把 springfox-boot-starter 替换为 knife4j-spring-boot-starter;
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<!--在引用时请在maven中央仓库搜索3.X最新版本号-->
<version>3.0.2</version>
</dependency>
访问地址由原来的 http:// h o s t : {host}: host:{port}/swagger-ui.html 切换到 http:// h o s t : {host}: host:{port}/doc.html
注:如果想了解swagger-ui可以去参考swagger-springboot详解这个文章
3:配置使用Knife4j
1:导包
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<!--在引用时请在maven中央仓库搜索3.X最新版本号-->
<version>3.0.2</version>
</dependency>
2:配置Knife4j配置类
package com.wkl.swagger_demo.config;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.oas.annotations.EnableOpenApi;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
/**
* Description:
* Date: 2022/6/21 - 下午 11:54
* author: wangkanglu
* version: V1.0
*/
@Component
//@EnableSwagger2 //开启Swagger2的自动配置
@EnableOpenApi //开启Knife4j配置
public class SwaggerConfig {
@Bean
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
// 通过.select()方法,去配置扫描接口
.select()
// RequestHandlerSelectors配置如何扫描接口
.apis(RequestHandlerSelectors.basePackage("com.wkl.swagger_demo.controller"))
.build();
}
//配置swagger-ui的api信息
private ApiInfo apiInfo(){
Contact contact = new Contact("联系人姓名","http://www.baidu.com/联系人连接","邮箱");
return new ApiInfo("Swagger学习", // 标题
"学习演示如何配置Swagger", // 描述
"v1.0", // 版本
"http://terms.service.url/组织链接", // 组织链接
contact, // 联系人信息
"Apach 2.0 许可", // 许可
"许可链接", // 许可连接
new ArrayList<>()); // 扩展
}
}
3:写controller
package com.wkl.swagger_demo.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* @author wangkanglu
* @version 1.0
* @description
* @date 2022-08-26 10:23
*/
@RestController
@RequestMapping("/hello")
@Api(tags = "利用helloworld测试swagger")
public class HelloController {
@ApiOperation("获取列表方法")
@RequestMapping(value = "/getlist",method = RequestMethod.GET)
public String getlist(){
return "getlist";
}
}
4:访问Knife4j页面
直接访问Knife4j的页面:http://ip:prot/doc.html