Go 后端开发学习笔记-引入swagger

内容列表

Swagger API 文档集成指南

1. 安装 Swagger 工具

方法一:手动安装

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

方法二:使用 Makefile(推荐)

项目已经集成了自动安装功能,只需要运行:

make swagger

这个命令会自动检查并安装 swag 工具。

2. 添加依赖

在项目中添加以下依赖:

go get -u github.com/swaggo/gin-swagger github.com/swaggo/files

3. 配置 Swagger

3.1 在 main.go 中添加配置

cmd/server/main.go 文件中添加以下内容:

import (
    // ... 其他导入
    _ "front-page/docs" // 导入生成的 Swagger 文档
    swaggerFiles "github.com/swaggo/files"
    ginSwagger "github.com/swaggo/gin-swagger"
)

// @title           Front Page API
// @version         1.0
// @description     Front Page 项目的 API 文档
// @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

func main() {
    // ... 其他代码
    
    // 添加 Swagger 路由
    router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
    
    // ... 其他代码
}

3.2 在 API 处理函数中添加注释

在 API 处理函数上添加 Swagger 注释,例如:

// @Summary      获取所有待办事项
// @Description  返回所有待办事项的列表
// @Tags         todos
// @Accept       json
// @Produce      json
// @Success      200  {array}   Todo
// @Router       /todos [get]
func listTodos(c *gin.Context) {
    // ... 函数实现
}

4. 生成文档

方法一:使用 Makefile(推荐)

make swagger

方法二:直接使用 swag 命令

swag init -g cmd/server/main.go

5. 启动服务

方法一:使用 Makefile(推荐)

make run-with-docs

方法二:直接运行

go run cmd/server/main.go

6. 访问 Swagger UI

启动服务后,可以通过以下地址访问 Swagger UI:

http://localhost:8080/swagger/index.html

7. 常用命令说明

  • make swagger - 生成 Swagger 文档
  • make run - 运行服务器
  • make run-with-docs - 生成文档并运行服务器
  • make clean - 清理编译文件

8. 注意事项

  1. 修改 API 后需要重新生成文档
  2. 确保所有 API 处理函数都有正确的 Swagger 注释
  3. 文档生成后会自动创建 docs 目录
  4. 可以通过 Swagger UI 测试 API 接口

9. 常见问题

9.1 命令未找到

如果遇到 “command not found” 错误,请确保:

  1. Go 环境已正确配置
  2. GOPATH/bin 已添加到系统 PATH
  3. 或者使用 make swagger 命令自动安装

9.2 文档未更新

如果修改了 API 但文档未更新:

  1. 确保添加了正确的 Swagger 注释
  2. 重新运行 make swagger
  3. 重启服务器

10. 参考链接

相关

Web 本地存储

2018-06-01

为了达到某些需求,我们通常需要在本地存储一些数据,方便我们进行用户个性化定制服务。

了解更多

为什么说useSignal()是Web框架的未来

2024-11-11

Angular、Qwik的作者 MIŠKO HEVERY 在文章中盛赞了 useSignal() 这种数据流方案, 表示 useSignal() 是前端框架的未来,并考虑在Angular中实现它。我们在这里不评价文章的观点,我们来看看 useSignal 这个方案的前世今生。

了解更多

原生表格的虚拟滚动实践(上)

2024-12-16

由于业务开发需要在低版本浏览器中使用,所以需要使用原生表格实现虚拟滚动,本篇仅分享表格竖向的虚拟滚动。

了解更多