給Swagger換一套面板 Knife4j整合記錄
阿新 • • 發佈:2020-11-02
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()
測試訪問
在瀏覽器輸入地址:http://host:port/doc.html
可以設定全域性引數:
支援線上除錯
離線文件支援匯出md、pdf等
最後
前端如何更優雅的呼叫api呢?參考:
Vue 使用typescript, 優雅的呼叫swagger API
後面有空,可以將這個整合到knife4j
作者:Jadepeng
出處:jqpeng的技術記事本--http://www.cnblogs.com/xiaoqi
您的支援是對博主最大的鼓勵,感謝您的認真閱讀。
本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。