亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間:2025年03月24日 09:38:28   作者:codepzj  
Swagger 是一個(gè)基于 OpenAPI 規(guī)范設(shè)計(jì)的工具,用于為 RESTful API 生成交互式文檔,下面小編就來介紹一下如何在 Go 項(xiàng)目中集成 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

項(xiàng)目依賴安裝

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

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

格式化 Swagger 注釋

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

swag fmt

使用 swag CLI 生成文檔

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

swag init

swag init 常用選項(xiàng)

選項(xiàng)說明默認(rèn)值
--generalInfo, -g指定包含通用 API 信息的 Go 文件路徑main.go
--dir, -d指定解析的目錄./
--exclude排除解析的目錄(多個(gè)目錄用逗號(hào)分隔)
--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è)置文檔實(shí)例名稱swagger

示例:

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

Swagger 注釋格式

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

通用 API 信息

通常在 main.go 中定義,用于描述整個(gè) 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 "請(qǐng)求參數(shù)錯(cuò)誤"
// @Router /post/{id} [get]
func GetPostById(c *gin.Context) {
    // 函數(shù)實(shí)現(xiàn)
}
  • @Summary:接口簡述
  • @Produce:返回的 MIME 類型
  • @Param:參數(shù)定義(格式:名稱 位置 類型 是否必填 描述
  • @Success:成功響應(yīng)(格式:狀態(tài)碼 {類型} 數(shù)據(jù)結(jié)構(gòu) 描述
  • @Failure:失敗響應(yīng)
  • @Router:路由路徑和方法

示例項(xiàng)目代碼

以下是一個(gè)完整的示例,展示如何在 Gin 項(xiàng)目中集成 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 "請(qǐng)求參數(shù)錯(cuò)誤"
// @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:     "測(cè)試",
		Description: "測(cè)試",
	})
}

生成并訪問文檔

運(yùn)行 swag init 生成文檔。

啟動(dòng)項(xiàng)目:go run main.go。

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

總結(jié)

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

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

相關(guān)文章

  • Go語言MessageBox用法實(shí)例

    Go語言MessageBox用法實(shí)例

    這篇文章主要介紹了Go語言MessageBox用法,實(shí)例分析了MessageBox提示框的實(shí)現(xiàn)與使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • Golang錯(cuò)誤處理方式異常與error

    Golang錯(cuò)誤處理方式異常與error

    我們?cè)谑褂肎olang時(shí),不可避免會(huì)遇到異常情況的處理,與Java、Python等語言不同的是,Go中并沒有try...catch...這樣的語句塊,這個(gè)時(shí)候我們?nèi)绾尾拍芨玫奶幚懋惓D??本文來教你正確方法
    2023-01-01
  • golang執(zhí)行命令獲取執(zhí)行結(jié)果狀態(tài)(推薦)

    golang執(zhí)行命令獲取執(zhí)行結(jié)果狀態(tài)(推薦)

    這篇文章主要介紹了golang執(zhí)行命令獲取執(zhí)行結(jié)果狀態(tài)的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2019-11-11
  • golang如何讓string轉(zhuǎn)int64

    golang如何讓string轉(zhuǎn)int64

    這篇文章主要介紹了golang如何讓string轉(zhuǎn)int64問題,
    2024-02-02
  • 詳解Golang編程中的常量與變量

    詳解Golang編程中的常量與變量

    這篇文章主要介紹了詳解Golang編程中的常量與變量,是Go語言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-10-10
  • golang 限制同一時(shí)間的并發(fā)量操作

    golang 限制同一時(shí)間的并發(fā)量操作

    這篇文章主要介紹了golang 限制同一時(shí)間的并發(fā)量操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Golang 錯(cuò)誤捕獲Panic與Recover的使用

    Golang 錯(cuò)誤捕獲Panic與Recover的使用

    對(duì)于Go語言的錯(cuò)誤是通過返回值的方式,本文主要介紹了Golang 錯(cuò)誤捕獲Panic與Recover的使用,文中根據(jù)實(shí)例編碼詳細(xì)介紹的十分詳盡,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Go中Writer和Reader接口的使用入門

    Go中Writer和Reader接口的使用入門

    本文主要介紹了Go中Writer和Reader接口的使用入門,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 使用Go初始化Struct的方法詳解

    使用Go初始化Struct的方法詳解

    面向?qū)ο缶幊陶Z言最基礎(chǔ)的概念就是類(class),不過Go語言并沒有類的概念,所以使用Go語言開發(fā)時(shí),我們一般會(huì)用struct(結(jié)構(gòu)體)來模擬面向?qū)ο笾械念?下面我們來介紹幾種創(chuàng)建struct類型變量的方法,需要的朋友可以參考下
    2024-01-01
  • GoPath模式和GoMoudle模式的相愛相殺

    GoPath模式和GoMoudle模式的相愛相殺

    這篇文章主要介紹了GoPath模式和GoMoudle模式的相愛相殺,本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03

最新評(píng)論