Golang使用Swag搭建api文檔的全過程
1. 簡介
Gin
是Golang
目前最為常用的Web
框架之一。
公司項(xiàng)目驗(yàn)收需要API接口設(shè)計(jì)說明書(Golang
后端服務(wù)基于Gin
框架編寫),編寫任務(wù)自然就落到了我們研發(fā)人員身上。
項(xiàng)目經(jīng)理提供了文檔模板,讓我們參考模板來手動編寫,要求兩天內(nèi)完成,時(shí)間緊任務(wù)重。
看了下文檔中API接口設(shè)計(jì)內(nèi)容,很簡單,但是接口數(shù)量太多還需要調(diào)整文檔格式,手動編寫兩天肯定搞不定。
發(fā)現(xiàn)API接口設(shè)計(jì)內(nèi)容和swagger文檔格式很相近,那能不能使用工具生成swagger文檔后再轉(zhuǎn)換為word格式呢?
和項(xiàng)目經(jīng)理溝通了我的想法,項(xiàng)目經(jīng)理回答說,內(nèi)容豐富、格式統(tǒng)一就行,不要求完全參考模板中的格式來。
既然這樣,那就開干吧!
2. 生成swagger.json文檔
本章節(jié)僅為演示操作步驟,編寫得很簡潔。
2.1. 安裝swag
首先需要安裝swag
命令行工具:go install github.com/swaggo/swag/cmd/swag@latest
。
2.2. 新建示例項(xiàng)目
比如新建swagdoc
項(xiàng)目:go mod init swagedoc
。
2.3. 新建main.go文件并輸入示例代碼
package main import ( "net/http" "swagdoc/docs" "github.com/gin-gonic/gin" swaggerfiles "github.com/swaggo/files" ginSwagger "github.com/swaggo/gin-swagger" ) // @BasePath /api/v1 // PingExample godoc // @Summary ping example // @Schemes // @Description do ping // @Tags example // @Accept json // @Produce json // @Success 200 {string} Helloworld // @Router /example/helloworld [get] func Helloworld(g *gin.Context) { g.JSON(http.StatusOK, "helloworld") } func main() { r := gin.Default() docs.SwaggerInfo.BasePath = "/api/v1" v1 := r.Group("/api/v1") { eg := v1.Group("/example") { eg.GET("/helloworld", Helloworld) } } r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerfiles.Handler)) r.Run(":8080") }
2.4. 生成swagger.json文檔
執(zhí)行命令swagger init
命令生成swagger.json
文檔。文件目錄結(jié)構(gòu)如下圖所示:
2.5. 訪問api文檔
執(zhí)行下列命令運(yùn)行示例程序:
go mod tidy go run ./main.go
在瀏覽器中訪問api文檔 :
可以通過瀏覽器直接訪問api:
3. 常見問題
3.1. Error parsing type definition報(bào)錯(cuò)如何解決?
若出現(xiàn)解析類型定義的錯(cuò)誤,需要在執(zhí)行swage init
時(shí)加上對應(yīng)的選項(xiàng):
例如:swag init --parseDependency --parseInternal
3.2. 如何編寫api注釋?
參考 聲明式注釋格式。
4. 將swagger.json文檔轉(zhuǎn)換為word文檔
可以使用 swagger轉(zhuǎn)word文檔在線工具 來進(jìn)行轉(zhuǎn)換。
如果在線工具不能使用,可以自行參考網(wǎng)上教程在本地搭建轉(zhuǎn)換工具來進(jìn)行轉(zhuǎn)換,就不在此贅述了。
轉(zhuǎn)換后的word
文檔效果圖如下所示:
5. 參考資料
如何使用Swag將Go的注釋轉(zhuǎn)換為Swagger文檔?
以上就是Golang使用Swag搭建api文檔的全過程的詳細(xì)內(nèi)容,更多關(guān)于Golang Swag搭建api文檔的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
golang實(shí)現(xiàn)通過smtp發(fā)送電子郵件的方法
這篇文章主要介紹了golang實(shí)現(xiàn)通過smtp發(fā)送電子郵件的方法,實(shí)例分析了Go語言基于SMTP協(xié)議發(fā)送郵件的相關(guān)技巧,需要的朋友可以參考下2016-07-07使用go語言實(shí)現(xiàn)Redis持久化的示例代碼
redis 是一個(gè)內(nèi)存數(shù)據(jù)庫,如果你把進(jìn)程殺掉,那么里面存儲的數(shù)據(jù)都會消失,那么這篇文章就是來解決 redis 持久化的問題,本文給大家介紹了使用go語言實(shí)現(xiàn)Redis持久化,需要的朋友可以參考下2024-07-07Go語言中基本數(shù)據(jù)類型的相互轉(zhuǎn)換詳解
Go在不同類型的變量之間賦值時(shí)需要顯示轉(zhuǎn)換,不能自動轉(zhuǎn)換。這篇文章主要和大家介紹了Go語言中基本數(shù)據(jù)類型的相互轉(zhuǎn)換,感興趣的小伙伴可以了解一下2022-10-10詳解如何使用Go語言進(jìn)行文件監(jiān)控和通知
在Go語言中,文件監(jiān)控通常涉及到文件系統(tǒng)事件的監(jiān)聽,文件或目錄的狀態(tài)發(fā)生變化(如創(chuàng)建、刪除、修改等)時(shí),你的程序需要得到通知,所以本文給大家介紹了如何使用Go語言進(jìn)行文件監(jiān)控和通知,需要的朋友可以參考下2024-06-06Air實(shí)現(xiàn)Go程序?qū)崟r(shí)熱重載使用過程解析示例
這篇文章主要為大家介紹了Air實(shí)現(xiàn)Go程序?qū)崟r(shí)熱重載使用過程解析示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-047分鐘讀懂Go的臨時(shí)對象池pool以及其應(yīng)用場景
這篇文章主要給大家介紹了關(guān)于如何通過7分鐘讀懂Go的臨時(shí)對象池pool以及其應(yīng)用場景的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或使用Go具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧2018-11-11Golang標(biāo)準(zhǔn)庫之errors包應(yīng)用方式
Go語言的errors包提供了基礎(chǔ)的錯(cuò)誤處理能力,允許通過errors.New創(chuàng)建自定義error對象,error在Go中是一個(gè)接口,通過實(shí)現(xiàn)Error方法來定義錯(cuò)誤文本,對錯(cuò)誤的比較通常基于對象地址,而非文本內(nèi)容,因此即使兩個(gè)錯(cuò)誤文本相同2024-10-10用gin開發(fā)的golang項(xiàng)目三種開發(fā)模式方式
這篇文章主要介紹了用gin開發(fā)的golang項(xiàng)目三種開發(fā)模式方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01gtoken替換jwt實(shí)現(xiàn)sso登錄的問題小結(jié)
這篇文章主要介紹了gtoken替換jwt實(shí)現(xiàn)sso登錄,主要介紹了替換jwt的原因分析及gtoken的優(yōu)勢,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05