中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用go?swagger生成接口文檔

發布時間:2022-08-25 17:56:54 來源:億速云 閱讀:172 作者:iii 欄目:開發技術

本篇內容介紹了“怎么使用go swagger生成接口文檔”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

    前言

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

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

    Swagger介紹

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

    1、安裝

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

    在macOS中安裝 swag需要執行如下命令:

    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接口文檔數據。

    • 使用gin-swagger渲染在線接口文檔頁面。

    1、添加注釋

    go-swapper注解規范說明:

    注:注解詳情可參見官網文檔Swagger Documentation

    注解描述
    @Summary摘要
    @ProduceAPI 可以產生的 MIME 類型的列表,MIME 類型你可以簡單的理解為響應類型,例如:json、xml、html 等等
    @Param參數格式,從左到右分別為:參數名、入參類型、數據類型、是否必填、注釋
    @Success響應成功,從左到右分別為:狀態碼、參數類型、數據類型、注釋
    @Failure響應失敗,從左到右分別為:狀態碼、參數類型、數據類型、注釋
    @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 "狀態"
    // @Param page query int false "頁碼"
    // @Param page_size query int false "每頁數量"
    // @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 創建文章
    // @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 "創建者"
    // @Param state body int false "狀態"
    // @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、生成接口文檔數據

    格式化swag注解

    $ swag fmt

    在項目根目錄執行以下命令,使用swag工具生成接口文檔數據。

    $ swag init

    執行完上述命令后,如果你寫的注釋格式沒問題,此時你的項目根目錄下會多出一個docs文件夾。

    ./docs

    ├── docs.go

    ├── swagger.json

    └── swagger.yaml

    3、引入gin-swagger渲染文檔數據

    然后在項目代碼中注冊路由的地方按如下方式引入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生成接口文檔

    “怎么使用go swagger生成接口文檔”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    乐业县| 南阳市| 拉萨市| 通河县| 兰考县| 余姚市| 沁源县| 石阡县| 文昌市| 讷河市| 南澳县| 绍兴市| 清远市| 岳普湖县| 吉安市| 白沙| 滁州市| 昌都县| 乌兰察布市| 云梦县| 红河县| 博客| 多伦县| 苏尼特左旗| 德格县| 陇西县| 绿春县| 宝丰县| 凤山县| 仙居县| 克什克腾旗| 平山县| 永平县| 威远县| 吉安市| 西青区| 常宁市| 辽宁省| 凤庆县| 农安县| 天柱县|