最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

go swagger生成接口文檔使用教程

 更新時間:2022年08月19日 11:41:54   作者:yi個俗人  
這篇文章主要為大家介紹了go swagger生成接口文檔使用教程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

前言

這篇文章主要介紹了Go語言使用swagger生成接口文檔的方法,希望能夠對大家的學習或工作具有一定的幫助,需要的朋友可以參考下。

在前后端分離的項目開發(fā)過程中,如果后端同學能夠提供一份清晰明了的接口文檔,那么就能極大地提高大家的溝通效率和開發(fā)效率。那如何維護接口文檔,歷來都是令人頭痛的,感覺很浪費精力,而且后續(xù)接口文檔的維護也十分耗費精力。在很多年以前,也流行用word等工具寫接口文檔,這里面的問題很多,如格式不統(tǒng)一、后端人員消費精力大、文檔的時效性也無法保障。

針對這類問題,最好是有一種方案能夠既滿足我們輸出文檔的需要又能隨代碼的變更自動更新,Swagger正是那種能幫我們解決接口文檔問題的工具。

Swagger介紹

Swagger是基于標準的 OpenAPI 規(guī)范進行設計的,本質是一種用于描述使用json表示的Restful Api的接口描述語言,只要照著這套規(guī)范去編寫你的注解或通過掃描代碼去生成注解,就能生成統(tǒng)一標準的接口文檔和一系列 Swagger 工具。Swagger包括自動文檔,代碼生成和測試用例生成。

1、安裝

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

在macOS中安裝 swag需要執(zhí)行如下命令:

mv $GOPATH/bin/swag /usr/local/go/bin

2、檢測是否安裝成功

$ swag -v
swag version v1.8.4

3、安裝gin-swagger擴展

$ go get -u -v github.com/swaggo/gin-swagger
$ go get -u -v github.com/swaggo/files
$ go get -u -v github.com/alecthomas/template

使用

使用gin-swagger為你的代碼自動生成接口文檔,一般需要下面三個步驟:

  • 按照swagger要求給接口代碼添加聲明式注釋。
  • 使用swag工具掃描代碼自動生成api接口文檔數(shù)據(jù)。
  • 使用gin-swagger渲染在線接口文檔頁面。

1、添加注釋

go-swapper注解規(guī)范說明:

注:注解詳情可參見官網(wǎng)文檔Swagger Documentation

注解描述
@Summary摘要
@ProduceAPI 可以產(chǎn)生的 MIME 類型的列表,MIME 類型你可以簡單的理解為響應類型,例如:json、xml、html 等等
@Param參數(shù)格式,從左到右分別為:參數(shù)名、入?yún)㈩愋?、?shù)據(jù)類型、是否必填、注釋
@Success響應成功,從左到右分別為:狀態(tài)碼、參數(shù)類型、數(shù)據(jù)類型、注釋
@Failure響應失敗,從左到右分別為:狀態(tài)碼、參數(shù)類型、數(shù)據(jù)類型、注釋
@Router路由,從左到右分別為:路由地址,HTTP 方法

示例demo:

package main
import (
	"github.com/gin-gonic/gin"
	"github.com/swaggo/files"
	ginSwagger "github.com/swaggo/gin-swagger"
	_ "github/mwqnice/swag/docs" // 千萬不要忘了導入把你上一步生成的docs
)
type Article struct{
	ID         uint32 `gorm:"primary_key" json:"id"`
	CreatedBy  string `json:"created_by"`
	ModifiedBy string `json:"modified_by"`
	CreatedOn  uint32 `json:"created_on"`
	ModifiedOn uint32 `json:"modified_on"`
	DeletedOn  uint32 `json:"deleted_on"`
	IsDel      uint8  `json:"is_del"`
	Title         string `json:"title"`
	Desc          string `json:"desc"`
	Content       string `json:"content"`
	CoverImageUrl string `json:"cover_image_url"`
	State         uint8  `json:"state"`
}
func NewArticle() Article {
	return Article{}
}
func main()  {
	r := gin.Default()
	r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
	r.Run(":8088")
}
// @Summary 獲取單個文章
// @Produce json
// @Param id path int true "文章ID"
// @Success 200 {object} Article "成功"
// @Failure 400 {object} string "請求錯誤"
// @Failure 500 {object} string "內部錯誤"
// @Router /api/v1/articles/{id} [get]
func (a Article) Get(c *gin.Context) {
}
// @Summary 獲取多個文章
// @Produce json
// @Param name query string false "文章名稱"
// @Param tag_id query int false "標簽ID"
// @Param state query int false "狀態(tài)"
// @Param page query int false "頁碼"
// @Param page_size query int false "每頁數(shù)量"
// @Success 200 {object} Article "成功"
// @Failure 400 {object} string "請求錯誤"
// @Failure 500 {object} string "內部錯誤"
// @Router /api/v1/articles [get]
func (a Article) List(c *gin.Context) {
	return
}
// @Summary 創(chuàng)建文章
// @Produce json
// @Param tag_id body string true "標簽ID"
// @Param title body string true "文章標題"
// @Param desc body string false "文章簡述"
// @Param cover_image_url body string true "封面圖片地址"
// @Param content body string true "文章內容"
// @Param created_by body int true "創(chuàng)建者"
// @Param state body int false "狀態(tài)"
// @Success 200 {object} Article "成功"
// @Failure 400 {object} string "請求錯誤"
// @Failure 500 {object} string "內部錯誤"
// @Router /api/v1/articles [post]
func (a Article) Create(c *gin.Context) {
}
// @Summary 更新文章
// @Produce json
// @Param tag_id body string false "標簽ID"
// @Param title body string false "文章標題"
// @Param desc body string false "文章簡述"
// @Param cover_image_url body string false "封面圖片地址"
// @Param content body string false "文章內容"
// @Param modified_by body string true "修改者"
// @Success 200 {object} Article "成功"
// @Failure 400 {object} string "請求錯誤"
// @Failure 500 {object} string "內部錯誤"
// @Router /api/v1/articles/{id} [put]
func (a Article) Update(c *gin.Context) {
	return
}
// @Summary 刪除文章
// @Produce  json
// @Param id path int true "文章ID"
// @Success 200 {string} string "成功"
// @Failure 400 {object} string "請求錯誤"
// @Failure 500 {object} string "內部錯誤"
// @Router /api/v1/articles/{id} [delete]
func (a Article) Delete(c *gin.Context) {
	return
}

2、生成接口文檔數(shù)據(jù)

格式化swag注解

$ swag fmt

在項目根目錄執(zhí)行以下命令,使用swag工具生成接口文檔數(shù)據(jù)。

$ swag init

執(zhí)行完上述命令后,如果你寫的注釋格式?jīng)]問題,此時你的項目根目錄下會多出一個docs文件夾。

./docs

├── docs.go

├── swagger.json

└── swagger.yaml

3、引入gin-swagger渲染文檔數(shù)據(jù)

然后在項目代碼中注冊路由的地方按如下方式引入gin-swagger相關內容:

import (
	"github.com/gin-gonic/gin"
	"github.com/swaggo/files"
	ginSwagger "github.com/swaggo/gin-swagger"
	_ "github/mwqnice/swag/docs" // 千萬不要忘了導入把你上一步生成的docs
)
//添加swagger訪問路由
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))

啟動項目,在瀏覽器中輸入地址:http://127.0.0.1:8088/swagger/index.html

總結

到此這篇關于go語言使用swagger生成接口文檔的文章就介紹到這了, 希望可以對你的開發(fā)有一定幫助。

更多關于go swagger接口文檔的資料請關注腳本之家其它相關文章!

相關文章

  • Golang?reflect反射的使用實例

    Golang?reflect反射的使用實例

    Golang反射的錯誤大多數(shù)都來自于調用了一個不適合當前類型的方法,而且,這些錯誤通常是在運行時才會暴露出來,而不是在編譯時,如果我們傳遞的類型在反射代碼中沒有被覆蓋到那么很容易就會panic,本文就介紹一下使用go反射時很大概率會出現(xiàn)的錯誤,需要的可以參考一下
    2023-04-04
  • 詳解如何使用beego orm在postgres中存儲圖片

    詳解如何使用beego orm在postgres中存儲圖片

    這篇文章主要為大家介紹了如何使用beego orm在postgres中存儲圖片詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • golang中protobuf的使用詳解

    golang中protobuf的使用詳解

    protobuf是Google公司提出的一種輕便高效的結構化數(shù)據(jù)存儲格式,常用于結構化數(shù)據(jù)的序列化,具有語言無關、平臺無關、可擴展性特性,常用于通訊協(xié)議、服務端數(shù)據(jù)交換場景,下面我們就來看看golang中protobuf的具體使用吧
    2023-10-10
  • 基于go語言實現(xiàn)圖片驗證碼的代碼示例

    基于go語言實現(xiàn)圖片驗證碼的代碼示例

    這篇文章主要為大家詳細介紹了基于go語言實現(xiàn)圖片驗證碼的代碼示例,文中的示例代碼簡潔易懂,具有一定的借鑒價值,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-10-10
  • 關于golang中平行賦值淺析

    關于golang中平行賦值淺析

    這篇文章主要給大家介紹了關于golang中平行賦值的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用golang具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-08-08
  • Go語言之使用pprof工具查找goroutine(協(xié)程)泄漏

    Go語言之使用pprof工具查找goroutine(協(xié)程)泄漏

    這篇文章主要介紹了Go語言之使用pprof工具查找goroutine(協(xié)程)泄漏,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • go語言實現(xiàn)http服務端與客戶端的例子

    go語言實現(xiàn)http服務端與客戶端的例子

    今天小編就為大家分享一篇go語言實現(xiàn)http服務端與客戶端的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • GOLANG使用Context實現(xiàn)傳值、超時和取消的方法

    GOLANG使用Context實現(xiàn)傳值、超時和取消的方法

    這篇文章主要介紹了GOLANG使用Context實現(xiàn)傳值、超時和取消的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • Go語言使用時會遇到的錯誤及解決方法詳解

    Go語言使用時會遇到的錯誤及解決方法詳解

    這篇文章主要為大家詳細介紹了Go語言使用時常常會遇到的一些錯誤及解決方法,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2023-07-07
  • 淺析golang如何在多線程中避免CPU指令重排

    淺析golang如何在多線程中避免CPU指令重排

    這篇文章主要為大家詳細介紹了golang在多線程中避免CPU指令重排的相關知識,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-03-03

最新評論

呼伦贝尔市| 西丰县| 麟游县| 蒙阴县| 丹江口市| 泽库县| 合肥市| 英德市| 海原县| 阿拉尔市| 中方县| 日喀则市| 沭阳县| 绍兴市| 珠海市| 英山县| 哈尔滨市| 大石桥市| 五峰| 兴化市| 姜堰市| 广昌县| 集贤县| 山丹县| 大荔县| 叶城县| 房产| 西充县| 禹州市| 登封市| 且末县| 濉溪县| 屏边| 佛冈县| 上杭县| 内黄县| 呼和浩特市| 江都市| 宁明县| 运城市| 苍梧县|