页面好看,我放两张对比图
图一是knife4j的官网,图二是swagger默认的界面。如果觉得第二章比第一张好看的,可以不用往下看了。
贴一下knife4j的官网:https://doc.xiaominfo.com/,里面有详细的介绍,这里只简单的介绍一下如何搭建,先看一下简单的项目结构
<!--整合Knife4j-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
Knife4j里面集成了swagger的jar包,所以项目中有一个knife4j的jar包就能使用
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.ApiSelectorBuilder;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* @Author nitric oxide
* @Description
* @Date 6:13 下午 2021/11/11
*/
@EnableSwagger2
@Configuration
public class SwaggerConfig {
@Bean(value = "defaultApi2")
public Docket defaultApi2() {
ApiSelectorBuilder builder = new Docket(DocumentationType.SWAGGER_2)
.enableUrlTemplating(false)
.apiInfo(apiInfo())
// 选择那些路径和api会生成document
.select()
// 对所有api进行监控
.apis(RequestHandlerSelectors.any())
//这里可以自定义过滤
.paths(this::filterPath);
return builder.build();
}
private boolean filterPath(String path) {
boolean ret = path.endsWith("/error");
if (ret) {
return false;
}
//这块可以写其他的过滤逻辑
return true;
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("title")
.description("description")
.termsOfServiceUrl("https://www.baidu.com")
.version("1.0")
.contact(new Contact("nitric oxide", "www.baidu.com", "123@qq.com"))
.build();
}
}
最后写一些swagger注解(不过我觉得上面的三个例子已经覆盖了大多数场景了)