golang使用swagger

1、安装

go install github.com/swaggo/swag/cmd/swag@latest
go get -u github.com/swaggo/gin-swagger
go get -u github.com/swaggo/gin-swagger/swaggerFiles

2、生成swag文档

命令:swag init

错误
'swag' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
 go install github.com/swaggo/swag/cmd/swag@latest

需要安装到bin环境变量

3、在main上添加

// @title Swagger Example API
// @version 1.0.0
// @description This is a sample Server pets
// @securityDefinitions.apikey ApiKeyAuth
// @in header
// @name x-token
// @BasePath /
func main() {

4、 引入docs文档

报错 Fetch error Internal Server Error doc.json 是没有引入docs

5、创建swagger路由

engine.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))

 6、再接口上添加注释

// @Tags CheckApi
// @Summary 检测测试
// @accept application/json
// @Produce application/json
// @Param data query request.Req true "查询渠道"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}"
// @Router /router/addr [get]

6、success 

### 集成和配置 Swagger 的方法 在 Golang 项目中集成和配置 Swagger 是一种常见的做法,用于自动生成 API 文档并方便开发者调试接口。以下是详细的说明: #### 安装 Swag 工具 为了实现注释到 Swagger 文档的转换,需要安装 `swag` 命令行工具。可以通过以下命令完成安装: ```bash go get -u github.com/swaggo/swag/cmd/swag ``` 此操作会下载并安装 swag 工具至 Go 的工作环境中[^1]。 #### 导入必要的依赖包 在项目的 `main.go` 文件或其他初始化文件中,需引入与 Swagger 相关的必要包。这些包通常包括以下几个部分: - **swaggerFiles**: 提供静态资源支持。 - **ginSwagger**: Gin 框架专用的中间件,负责加载 Swagger UI 页面。 - **_ "export/docs"**: 表示自动加载由 `swag init` 命令生成的文档代码(此处假设项目名为 `export`)。 具体导入语句如下所示: ```go import ( _ "export/docs" "github.com/gin-gonic/gin" ginSwagger "github.com/swaggo/gin-swagger" swaggerFiles "github.com/swaggo/files" ) ``` 上述代码片段展示了如何通过 `_` 符号隐式调用生成的文档模块以及显式声明其他所需组件[^2]。 #### 初始化 Swagger 并启动服务 执行以下步骤来设置路由路径以便访问 Swagger UI 接口页面: 1. 调用 `swag init` 命令于包含 `main.go` 文件的项目根目录下运行。该指令能够扫描整个工程内的注解信息进而构建对应的 JSON 数据结构存储于指定位置,默认情况下会在当前目录创建子文件夹命名为 `docs/`, 同时也会生产一份入口脚本即 `docs.go`. ```bash swag init ``` 2. 修改后的主函数应类似于下面这样定义好 URL 映射关系,并绑定具体的处理逻辑给定端点 `/swagger/*any`. ```go func main() { r := gin.Default() // 设置 Swagger 访问地址 url := ginSwagger.URL("/swagger/doc.json") r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler, url)) err := r.Run(":8081") if err != nil { panic(err.Error()) } } ``` 3. 添加适当的信息标签描述整体应用概况,在全局作用域外添加类似这样的注释即可满足需求: ```go // @title Sample API Documentation // @version 1.0 // @description This is a sample 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 ``` 以上过程涵盖了从环境搭建直至功能部署完整的生命周期管理[^3]. 对于更复杂的场景比如涉及 gRPC 或者 RESTful 架构混合使用的场合,则可能还需要额外考虑诸如将 HTML/CSS/JS 等前端资产打包进二进制可执行程序内部等问题解决办法可以参照特定框架官方指导手册或者社区贡献方案如利用 go-bindata 实现自动化嵌套等功能特性[^4]. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值