golang web開發——gin實戰之整合swagger

背景

如果我們之前搞過java web開發,我們應該都知道swagger這個API文檔自動生成利器,有了swagger可以方便我們與客戶端的聯調,基本上是一目瞭然,swagger支持java,自然它也能支持golang的gin框架,本小節,就花費5分鐘的時間,快速整合一下gin和swagger,我們將在上一個分層的gin實戰基礎上,我們開始整合swagger

golang web開發——gin實戰之整合swagger

swagger


swagger的github地址

https://github.com/swaggo/gin-swagger


Step1

打開我們上一個小節搭建的工程,整體結構圖如下圖所示

golang web開發——gin實戰之整合swagger

項目骨架圖

我們打開goland的一個終端,運行如下命令

go get -u github.com/swaggo/swag/cmd/swag

golang web開發——gin實戰之整合swagger

在沒有報錯的情況下,再運行swag init

golang web開發——gin實戰之整合swagger

這個時候你會發現你的項目中多了一個文件夾

golang web開發——gin實戰之整合swagger

Step2

在完成Step1之後,swagger的依賴基本上我們都有了,接下來,我們就要gin對swagger的url映射,或者我們在訪問瀏覽器的時候,我們怎麼知道對應請求Swagger頁面的URL呢,我們回到我們之前配置映射的地方,如下圖所示,我們一開始只有一個對/movie/get/:id的依賴,接下來我們要新增對swagger的映射

golang web開發——gin實戰之整合swagger

修改一下,代碼編程如下,這個一般是固定格式,但是我們也要稍微瞭解一下其中的原理,其實並不複雜,如下代碼所示,下面第二處標紅的表示,我們多加一個GET映射,以/swagger前綴開頭的都交給你ginSwagger.WrapHandler這個處理器處理

golang web開發——gin實戰之整合swagger

好了,到此我們重新運行一下swag init,然後打開瀏覽器訪問如下地址

http://localhost:8080/swagger/index.html

golang web開發——gin實戰之整合swagger


到此為止,我們已經初步看到了swagger的熟悉的頁面了,雖然有報錯,但這是我們前進的一大步,接下來我們一步步進行潤色就可以了


Step3


我們為我們的swagger新增標題和說明,在golang中,我們只需要寫一些註解就可以達到上述的效果,我們在main函數中,增加如下的註釋和引入一下swagger doc的依賴,如下所示,重新運行swag init

golang web開發——gin實戰之整合swagger

重啟項目,再次打開瀏覽器,再次訪問上述網址,我們發現項目不再報錯,也可以看到該文檔的一些基本信息

golang web開發——gin實戰之整合swagger

不報錯的swagger頁面

Step4

為/movie/get/:id 新增接口說明,在spring mvc中,我們可以在接口方法上加一些註解,然後在入參和出參上加一些特定註解,說明參數含義,然後swagger就會自動幫助我們變成接口說明,在golang中也是一樣,我們再handlers中的各個func上加註釋,而不是加註解,也可以完成一樣的工作,我們在GetMovieById上加上如下的註釋,然後再次運行swag init

就可以完成第一個接口說明了

golang web開發——gin實戰之整合swagger

重啟系統,然後再次訪問瀏覽器,我們可以看到最後的成果就出來了

golang web開發——gin實戰之整合swagger


並且我們可以成功的在裡面請求我們的系統接口了

golang web開發——gin實戰之整合swagger

小結

簡而言之,golang版的swagger還是比較易懂好用,並且容易上手的,但是我們每次修改完註釋,都要重新swag init重新生成最新的文檔說明,這個也是我們要做注意的,下一個小節,我們將完整的編寫關於電影數據庫的增刪改查的功能


分享到:


相關文章: