1. 程式人生 > >swagger實踐 及一些踩過的坑

swagger實踐 及一些踩過的坑

首先就是我們專案中用的swagger2,編輯的時候已經升級到3.0.0了
有空嘗試下。
然後至少要是個spring的專案,支援@configuration這個註解的版本,我們專案中用的spring4.1.0。
然後就是開開心心的碼程式碼了

@Configuration  
@EnableWebMvc  
@EnableSwagger2  
@ComponentScan(
        basePackages = {"com.dc.itil"} //swagger掃描的包
    )  
public class Swagger2 {
    @Bean
    ApiInfo apiInfo() {
        ApiInfo apiInfo = new
ApiInfo( /* "API Title", "API Description", "API Version", "API terms of service", "API Contact Email", "API Licence Type", "API License URL"); */ "ITIL3 API doc"
, "", "1.0", "", "", "", "" ); return apiInfo; } @Bean public Docket customImplementation(){ return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()); } }

寫好了配置類,需要加入一個展示api的頁面, swagger UI 這個很好用

這裡寫圖片描述

看一下目錄結構,放在webapp下面,當然我這個是個maven專案
之後就是在介面上加上你的api描述了
這裡寫圖片描述

啟動專案,訪問 doc資料夾 ,這時候出來的只是swagger的頁面 ,啥也沒有

這裡寫圖片描述

只需要在這裡鍵入你的api資料地址就能找到。當然你也可以讓他初始化的時候就顯示,這樣更方便。
修改index.html中的,換成自己的

 window.swaggerUi = new SwaggerUi({
        url: url,

這樣就可以完美優雅的檢視介面文件,你之前寫的亂七八糟的介面命名也會清晰的暴露出來。

坑:
1. 首先就是我寫完配置類Swagger2 .java 之後,訪問doc是可以訪問的 就是出不來介面文件,這個時候千萬不能著急,仔細思考,我一看文件裡面標題也沒出來,我猜想是@configuration修飾的類沒起作用,果然在掃描包路徑中沒有新增
2. 當點選try it out之後發現訪問的路徑不對,這時候我審查元素了那個按鈕,發現baseURI有問題,這時候需要修改swagger-ui.js中的basepath為自己的專案後端介面路徑

this.basePath = response.basePath + "/api"|| '';

總結一下,這個真的很好用,尤其是前後端分離的專案,再也不用給前端大姐寫複雜介面文件了,再也不用為介面穩當改來改去費勁了