go-swagger使用——自动生成web api

最近打算用go重写自己的网站,想着找一个自动生成API的网站,大家一致推荐go-swagger,想着一个库应该很简单的使用,本来想着简单的事情看看国内网站教程就好了,谁知道道路太坎坷了。本篇不讲swagger原理,只讲在安装过程遇到了那些问题,针对go小白。

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

还有一点注意的是,很多博客引入的是这个文件,他现在改名了并不是这样import的 解决办法是使用这个import swaggerFiles "github.com/swaggo/files"

至于其他属性,就自己学一学吧,这里就不赘述了

附上一个简易版的能跑起来的代码,不含逻辑处理,_ "swawgger/docs"这个包名讲一下,swagger是go.mod的名字,这个是把swag init 的内容导入进来。

package main

import (
	"github.com/gin-gonic/gin"
	swaggerFiles "github.com/swaggo/files"
	gs "github.com/swaggo/gin-swagger"

	_ "swawgger/docs" // 千万不要忘了导入把你上一步生成的docs
)

// @title API文档
// @version 1.0
// @description 怕自己忘记了,记录一下
// @BasePath  /api/v1

// @contact.name dxgzg
// @contact.url http://dxgzg.site
// @contact.email support@swagger.io

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

// @host 这里写接口服务的host
// @BasePath 这里写base path
func main() {
          
   
	r := gin.New()

	// liwenzhou.com ...
	r.GET("/swagger/*any", gs.WrapHandler(swaggerFiles.Handler))
	r.Run()
}

// ShowAccount godoc
// @Summary      Show an account
// @Description  get string by ID
// @Tags         accounts
// @Accept       json
// @Produce      json
// @Param        id   path      int  true  "Account ID"
// @Router       /accounts/{id} [get]
func ShowAccount(ctx *gin.Context) {
          
   

}

// second godoc
// @Summary      Show an account
// @Description  get string by ID
// @Tags         accounts
// @Accept       json
// @Produce      json
// @Param        id   path      int  false  "Account ID"
// @Router       /second/id [get]
// @Success      200 {object} string
func second(ctx *gin.Context) {
          
   

}

如果不清楚怎么使用的推荐看这篇博客

经验分享 程序员 微信小程序 职场和发展