Golang使用Swag搭建api文檔的全過程
1. 簡介
Gin是Golang目前最為常用的Web框架之一。
公司項目驗收需要API接口設計說明書(Golang后端服務基于Gin框架編寫),編寫任務自然就落到了我們研發(fā)人員身上。
項目經(jīng)理提供了文檔模板,讓我們參考模板來手動編寫,要求兩天內完成,時間緊任務重。
看了下文檔中API接口設計內容,很簡單,但是接口數(shù)量太多還需要調整文檔格式,手動編寫兩天肯定搞不定。
發(fā)現(xiàn)API接口設計內容和swagger文檔格式很相近,那能不能使用工具生成swagger文檔后再轉換為word格式呢?
和項目經(jīng)理溝通了我的想法,項目經(jīng)理回答說,內容豐富、格式統(tǒng)一就行,不要求完全參考模板中的格式來。
既然這樣,那就開干吧!
2. 生成swagger.json文檔
本章節(jié)僅為演示操作步驟,編寫得很簡潔。
2.1. 安裝swag
首先需要安裝swag命令行工具:go install github.com/swaggo/swag/cmd/swag@latest。
2.2. 新建示例項目
比如新建swagdoc項目: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文檔。文件目錄結構如下圖所示:

2.5. 訪問api文檔
執(zhí)行下列命令運行示例程序:
go mod tidy go run ./main.go
在瀏覽器中訪問api文檔 :

可以通過瀏覽器直接訪問api:


3. 常見問題
3.1. Error parsing type definition報錯如何解決?
若出現(xiàn)解析類型定義的錯誤,需要在執(zhí)行swage init時加上對應的選項:

例如:swag init --parseDependency --parseInternal
3.2. 如何編寫api注釋?
參考 聲明式注釋格式。
4. 將swagger.json文檔轉換為word文檔
可以使用 swagger轉word文檔在線工具 來進行轉換。
如果在線工具不能使用,可以自行參考網(wǎng)上教程在本地搭建轉換工具來進行轉換,就不在此贅述了。
轉換后的word文檔效果圖如下所示:

5. 參考資料
以上就是Golang使用Swag搭建api文檔的全過程的詳細內容,更多關于Golang Swag搭建api文檔的資料請關注腳本之家其它相關文章!
相關文章
golang實現(xiàn)通過smtp發(fā)送電子郵件的方法
這篇文章主要介紹了golang實現(xiàn)通過smtp發(fā)送電子郵件的方法,實例分析了Go語言基于SMTP協(xié)議發(fā)送郵件的相關技巧,需要的朋友可以參考下2016-07-07
用gin開發(fā)的golang項目三種開發(fā)模式方式
這篇文章主要介紹了用gin開發(fā)的golang項目三種開發(fā)模式方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01

