給Swagger換一套皮膚 Knife4j集成記錄
Swagger有一套經典的UI,但是並不是很好用,之前有看到Knife4j,介面美觀、功能完善,因此嘗試集成。
demo參考示例地址:knife4j-spring-boot-demo
Knife4j前身是swagger-bootstrap-ui,是一個為Swagger介面文檔賦能的工具
根據官方文檔,集成非常方便。
maven引用
第一步,是在項目的pom.xml
文件中引入knife4j
的依賴,如下:
<dependencies>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>2.0.6</version>
</dependency>
</dependencies>
當前最新版是2.0.6
如果你想使用bom的方式引入,請參考Maven Bom方式引用
創建Swagger配置文件
新建Swagger的配置文件SwaggerConfiguration.java
文件,創建springfox提供的Docket分組對象,程式碼如下:
@Configuration
@EnableSwagger2
@EnableKnife4j
@Import(BeanValidatorPluginsConfiguration.class)
public class SwaggerConfiguration {
@Bean(value = "defaultApi2")
public Docket defaultApi2() {
Docket docket=new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
//分組名稱
.groupName("2.X版本")
.select()
//這裡指定Controller掃描包路徑
.apis(RequestHandlerSelectors.basePackage("com.swagger.bootstrap.ui.demo.new2"))
.paths(PathSelectors.any())
.build();
return docket;
}
}
以上有兩個註解需要特別說明,如下表:
註解 | 說明 |
---|---|
@EnableSwagger2 |
該註解是Springfox-swagger框架提供的使用Swagger註解,該註解必須加 |
@EnableKnife4j |
該註解是knife4j 提供的增強註解,Ui提供了例如動態參數、參數過濾、介面排序等增強功能,如果你想使用這些增強功能就必須加該註解,否則可以不用加 |
spring-security 免認證
將/**/doc.html/**
加入:
private String[] getSwaggerUrl() {
List<String> urls = new ArrayList<String>();
urls.add("/**/swagger-resources/**");
urls.add("/**/webjars/**");
urls.add("/**/doc.html/**");
urls.add("/**/v2/**");
urls.add("/**/swagger-ui.html/**");
return urls.toArray(new String[urls.size()]);
}
http.authorizeRequests()
.antMatchers(getSwaggerUrl()).permitAll()
測試訪問
在瀏覽器輸入地址://host:port/doc.html
可以設置全局參數:
支援在線調試
離線文檔支援導出md、pdf等
最後
前端如何更優雅的調用api呢?參考:
Vue 使用typescript, 優雅的調用swagger API
後面有空,可以將這個集成到knife4j
作者:Jadepeng
出處:jqpeng的技術記事本–//www.cnblogs.com/xiaoqi
您的支援是對部落客最大的鼓勵,感謝您的認真閱讀。
本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。