[go-每日一库]golang swagger自动生成api文档
代码结构
. +--- docs | +--- docs.go | +--- swagger.json | +--- swagger.yaml +--- go.mod +--- go.sum +--- main.go +--- router | +--- router.go
router.go
package router import ( "github.com/gin-gonic/gin" ginSwagger "github.com/swaggo/gin-swagger" "github.com/swaggo/gin-swagger/swaggerFiles" _ "go-gin-swagger/docs" "net/http" ) func NewRouter() *gin.Engine { server := gin.Default() server.POST("login", login) server.GET("index", index) // add swagger url := ginSwagger.URL("http://localhost:8000/swagger/doc.json") server.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler, url)) return server } // @Summary 登录-login // @Produce json // @Param username body string true "username" // @Param password body string true "password" minLength(8) // @Success 200 // @Failure 400 // @Router /login [post] func login(ctx *gin.Context) { var user User ctx.ShouldBindJSON(&user) ctx.JSON(http.StatusOK, gin.H{"user": user.Username, "password": user.Password, "code": 0}) } // @Summary 首页-index // @Produce json // @Success 200 // @Failure 400 // @Router /index [get] func index(ctx *gin.Context) { ctx.JSON(http.StatusOK, gin.H{"msg": "index page", "code": 0}) } type User struct { Username string `json:"username"` Password string `json:"password"` }
main.go
package main import ( . "go-gin-swagger/router" ) // @title gin-swagger // @version 1.0 // @description Go-gin-swagger // @termsOfService http://localhost:8080 func main() { r := NewRouter() r.Run(":8080") }
go.mod
module go-gin-swagger go 1.16 require ( github.com/gin-gonic/gin v1.8.1 github.com/go-playground/validator/v10 v10.11.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/pelletier/go-toml/v2 v2.0.2 // indirect github.com/swaggo/gin-swagger v1.4.3 github.com/swaggo/swag v1.8.2 golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e // indirect golang.org/x/net v0.0.0-20220607020251-c690dde0001d // indirect golang.org/x/sys v0.0.0-20220608164250-635b8c9b7f68 // indirect ) replace go-gin-swagger => ../go-gin-swagger
参考:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
2021-06-10 linux tar包追加问题