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

Go語言Swagger實現(xiàn)為項目生成 API 文檔

 更新時間:2025年03月24日 09:38:28   作者:codepzj  
Swagger 是一個基于 OpenAPI 規(guī)范設(shè)計的工具,用于為 RESTful API 生成交互式文檔,下面小編就來介紹一下如何在 Go 項目中集成 Swagger,特別是結(jié)合 Gin 框架生成 API 文檔

安裝 Swagger

全局安裝 swag CLI

swag 是 Swagger 的命令行工具,用于生成 API 文檔??梢酝ㄟ^以下命令全局安裝:

go get github.com/swaggo/swag/cmd/swag@latest
go install github.com/swaggo/swag/cmd/swag@latest

項目依賴安裝

在項目中需要安裝以下依賴以支持 Gin 和 Swagger 的集成:

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

格式化 Swagger 注釋

使用 swag fmt 命令可以格式化項目中的 Swagger 注釋,確保注釋符合規(guī)范:

swag fmt

使用 swag CLI 生成文檔

運行以下命令生成 Swagger 文檔(默認(rèn)生成 docs.goswagger.jsonswagger.yaml 文件):

swag init

swag init 常用選項

選項說明默認(rèn)值
--generalInfo, -g指定包含通用 API 信息的 Go 文件路徑main.go
--dir, -d指定解析的目錄./
--exclude排除解析的目錄(多個目錄用逗號分隔)
--propertyStrategy, -p結(jié)構(gòu)體字段命名規(guī)則(snakecase、camelcase、pascalcase)camelcase
--output, -o輸出文件目錄(swagger.json、swagger.yaml 和 docs.go)./docs
--parseVendor是否解析 vendor 目錄中的 Go 文件
--parseDependency是否解析依賴目錄中的 Go 文件
--parseInternal是否解析 internal 包中的 Go 文件
--instanceName設(shè)置文檔實例名稱swagger

示例:

swag init --dir ./ --output ./docs --propertyStrategy snakecase

Swagger 注釋格式

Swagger 使用聲明式注釋來定義 API 的元信息。以下是常用注釋及其說明:

通用 API 信息

通常在 main.go 中定義,用于描述整個 API 的基本信息:

// @title Swagger Example API
// @version 1.0
// @description This is a sample server celler 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 localhost:8080
// @BasePath /api/v1
// @schemes http https

API 路由注釋

在具體路由處理函數(shù)上方添加注釋,定義該接口的行為:

// GetPostById
// @Summary 獲取文章信息
// @Produce json
// @Param id path string true "文章ID"
// @Success 200 {object} Post "成功返回文章信息"
// @Failure 400 {string} string "請求參數(shù)錯誤"
// @Router /post/{id} [get]
func GetPostById(c *gin.Context) {
    // 函數(shù)實現(xiàn)
}
  • @Summary:接口簡述
  • @Produce:返回的 MIME 類型
  • @Param:參數(shù)定義(格式:名稱 位置 類型 是否必填 描述
  • @Success:成功響應(yīng)(格式:狀態(tài)碼 {類型} 數(shù)據(jù)結(jié)構(gòu) 描述
  • @Failure:失敗響應(yīng)
  • @Router:路由路徑和方法

示例項目代碼

以下是一個完整的示例,展示如何在 Gin 項目中集成 Swagger:

package main

import (
	"github.com/gin-gonic/gin"
	swaggerFiles "github.com/swaggo/files"
	ginSwagger "github.com/swaggo/gin-swagger"
	"strconv"
	_ "swagger/docs" // 導(dǎo)入生成的 Swagger 文檔
)

// Post 文章結(jié)構(gòu)體
type Post struct {
	ID          int64  `json:"id"`
	Title       string `json:"title"`
	Content     string `json:"content"`
	Description string `json:"description"`
}

func main() {
	r := gin.Default()
	r.GET("/post/:id", GetPostById)
	// 配置 Swagger 路由
	r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
	r.Run(":8080")
}

// GetPostById 獲取文章信息
// @Summary 獲取文章信息
// @Produce json
// @Param id path string true "文章ID"
// @Success 200 {object} Post "成功返回文章信息"
// @Failure 400 {string} string "請求參數(shù)錯誤"
// @Router /post/{id} [get]
func GetPostById(c *gin.Context) {
	id, err := strconv.ParseInt(c.Param("id"), 10, 64)
	if err != nil {
		c.String(400, err.Error())
		return
	}
	c.JSON(200, Post{
		ID:          id,
		Title:       "codepzj",
		Content:     "測試",
		Description: "測試",
	})
}

生成并訪問文檔

運行 swag init 生成文檔。

啟動項目:go run main.go。

在瀏覽器中訪問 http://localhost:8080/swagger/index.html,即可查看交互式 API 文檔。

總結(jié)

通過 swaggin-swagger,我們可以輕松為 Go 項目生成規(guī)范的 API 文檔。只需要編寫簡單的注釋,Swagger 就能自動生成交互式的文檔頁面,方便開發(fā)和調(diào)試。

到此這篇關(guān)于Go語言Swagger實現(xiàn)為項目生成 API 文檔的文章就介紹到這了,更多相關(guān)Go Swagger生成API內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • golang使用map支持高并發(fā)的方法(1000萬次操作14ms)

    golang使用map支持高并發(fā)的方法(1000萬次操作14ms)

    這篇文章主要介紹了golang使用map支持高并發(fā)的方法(1000萬次操作14ms),本文給大家詳細(xì)講解,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-11-11
  • go?tar包歸檔文件處理操作全面指南

    go?tar包歸檔文件處理操作全面指南

    這篇文章主要為大家介紹了使用go?tar包歸檔文件處理操作全面指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • Go語言中實現(xiàn)多線程定時任務(wù)的示例代碼

    Go語言中實現(xiàn)多線程定時任務(wù)的示例代碼

    本文主要介紹了Go語言中實現(xiàn)多線程定時任務(wù)的示例代碼,使用goroutine和channel實現(xiàn)輕量級線程及通信,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-09-09
  • go實現(xiàn)冒泡排序算法

    go實現(xiàn)冒泡排序算法

    冒泡排序算法是數(shù)據(jù)結(jié)構(gòu)中常用的一種算法,本文就介紹了go實現(xiàn)冒泡排序算法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • GO如何模擬流操作實現(xiàn)示例探究

    GO如何模擬流操作實現(xiàn)示例探究

    這篇文章主要為大家介紹了GO如何模擬流操作實現(xiàn)示例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • Go語言實現(xiàn)請求超時處理的方法總結(jié)

    Go語言實現(xiàn)請求超時處理的方法總結(jié)

    這篇文章主要為大家詳細(xì)介紹了Go語言中實現(xiàn)請求的超時控制的方法,主要是通過timer和timerCtx來實現(xiàn)請求的超時控制,希望對大家有所幫助
    2023-05-05
  • Go標(biāo)準(zhǔn)庫encoding/gob的具體使用

    Go標(biāo)準(zhǔn)庫encoding/gob的具體使用

    Go標(biāo)準(zhǔn)庫encoding/gob實現(xiàn)二進制序列化與反序列化,本文主要介紹了Go標(biāo)準(zhǔn)庫encoding/gob的具體使用,感興趣的可以了解一下
    2025-06-06
  • Golang Map value不可尋址使用指針類型代替示例詳解

    Golang Map value不可尋址使用指針類型代替示例詳解

    這篇文章主要為大家介紹了Golang Map value不可尋址使用指針類型代替示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • golang interface{}類型轉(zhuǎn)換的實現(xiàn)示例

    golang interface{}類型轉(zhuǎn)換的實現(xiàn)示例

    在Go語言中,類型轉(zhuǎn)換可以通過斷言、顯式、隱式和強制四種方式實現(xiàn),針對interface{}類型轉(zhuǎn)換為float32或float64,需要使用type斷言或reflect包處理,感興趣的可以了解一下
    2024-10-10
  • Go語言dolphinscheduler任務(wù)調(diào)度處理

    Go語言dolphinscheduler任務(wù)調(diào)度處理

    這篇文章主要為大家介紹了Go語言dolphinscheduler任務(wù)調(diào)度處理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06

最新評論

泊头市| 南陵县| 桃江县| 灵武市| 堆龙德庆县| 射洪县| 柳河县| 阜阳市| 博湖县| 海南省| 高安市| 彰化县| 桦南县| 天台县| 新营市| 昌江| 望江县| 商城县| 云和县| 大邑县| 云林县| 齐河县| 肥东县| 桂东县| 横山县| 双鸭山市| 湟中县| 德钦县| 甘孜县| 长春市| 西华县| 榕江县| 广东省| 杂多县| 东宁县| 九龙城区| 南丰县| 晋宁县| 岳普湖县| 彰化县| 博乐市|