Swagger接口文檔


Swagger接口文檔
1.安裝 swag

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

2.驗證是否安裝成功

$ swag -v

3.編寫API注釋
以官網文檔為范例

// @Summary Add a new pet to the store
// @Description get string by ID
// @Accept  json
// @Produce  json
// @Param   some_id     path    int     true        "Some ID"
// @Success 200 {string} string    "ok"
// @Failure 400 {object} web.APIError "We need ID!!"
// @Failure 404 {object} web.APIError "Can not find ID"
// @Router /testapi/get-string-by-int/{some_id} [get]
func xxx() {
}

4.運行生成docs文檔

 swag init

5.在根目錄下會生成如下目錄結構

docs/
├── docs.go
└── swagger
    ├── swagger.json
└── swagger.yaml

6.main.go中添加API注釋

// @title Swagger Example API
// @version 1.0
// @description This is a sample server Petstore server.
// @termsOfService http://swagger.io/terms/

// @contact.name API Support
// @contact.url http://www.swagger.io/support
// @contact.email support@swagger.io

// @license.name Apache 2.0
// @license.url http://www.apache.org/licenses/LICENSE-2.0.html

// @host petstore.swagger.io
// @BasePath /v2
func main() {
	e := echo.New()

	e.GET("/swagger/*", echoSwagger.WrapHandler)

	e.Logger.Fatal(e.Start(":1323"))
}

字段說明

注釋 說明 示例
title 必填 應用程序的名稱。
version 必填 提供應用程序API的版本。 // @version 1.0
description 應用程序的簡短描述。 // @description This is a sample server celler server.
tag.name 標簽的名稱。 // @tag.name This is the name of the tag
tag.description 標簽的描述。 // @tag.description Cool Description
tag.docs.url 標簽的外部文檔的URL。 // @tag.docs.url https://example.com
tag.docs.description 標簽的外部文檔說明。 // @tag.docs.description Best example documentation
termsOfService API的服務條款。 // @termsOfService http://swagger.io/terms/
contact.name 公開的API的聯系信息。 // @contact.name API Support
contact.url 聯系信息的URL。 必須采用網址格式。 // @contact.url http://www.swagger.io/support
contact.email 聯系人/組織的電子郵件地址。 必須采用電子郵件地址的格式。 // @contact.email support@swagger.io
license.name 必填 用於API的許可證名稱。 // @license.name Apache 2.0
license.url 用於API的許可證的URL。 必須采用網址格式。 // @license.url http://www.apache.org/licenses/LICENSE-2.0.html
BasePath 運行API的基本路徑。 // @BasePath /api/v1

7.controller代碼中添加API操作注釋

// ShowAccount godoc
// @Summary Show a account
// @Description get string by ID
// @ID get-string-by-int
// @Accept  json
// @Produce  json
// @Param id path int true "Account ID"
// @Success 200 {object} model.Account
// @Header 200 {string} Token "qwerty"
// @Failure 400,404 {object} httputil.HTTPError
// @Failure 500 {object} httputil.HTTPError
// @Failure default {object} httputil.DefaultError
// @Router /accounts/{id} [get]

字段說明

注釋 描述
description 操作行為的詳細說明。
description.markdown 應用程序的簡短描述。該描述將從名為endpointname.md的文件中讀取。
id 用於標識操作的唯一字符串。在所有API操作中必須唯一。
tags 每個API操作的標簽列表,以逗號分隔。
summary 該操作的簡短摘要。
accept API可以使用的MIME類型的列表。值必須如“Mime類型”中所述。
produce API可以生成的MIME類型的列表。值必須如“Mime類型”中所述。
param 用空格分隔的參數。param name,param type,data type,is mandatory?,
security 每個API操作的安全性。
success 以空格分隔的成功響應。return code,{param type},data type,comment
failure 以空格分隔的故障響應。return code,{param type},data type,comment
response 與success、failure作用相同
header 以空格分隔的頭字段。 return code,{param type},data type,comment
router 以空格分隔的路徑定義。 path,[httpMethod]
x-name 擴展字段必須以x-開頭,並且只能使用json值。

參數類型

query
path
header
body
formData

數據類型

string (string)
integer (int, uint, uint32, uint64)
number (float32)
boolean (bool)
user defined struct

屬性

// @Param enumstring query string false "string enums" Enums(A, B, C)
// @Param enumint query int false "int enums" Enums(1, 2, 3)
// @Param enumnumber query number false "int enums" Enums(1.1, 1.2, 1.3)
// @Param string query string false "string valid" minlength(5) maxlength(10)
// @Param int query int false "int valid" minimum(1) maximum(10)
// @Param default query string false "string default" default(A)
// @Param collection query []string false "string collection" collectionFormat(multi)

結構體的示例值

type Account struct {
    ID   int    `json:"id" example:"1"`
    Name string `json:"name" example:"account name"`
    PhotoUrls []string `json:"photo_urls" example:"http://test/image/1.jpg,http://test/image/2.jpg"`
}

Swag幫助文檔:

https://github.com/swaggo/swag/blob/master/README_zh-CN.md
Echo swagger: https://github.com/swaggo/echo-swagger
Swagger格式:https://razeencheng.com/post/go-swagger


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM