[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

参考:

posted on   进击的davis  阅读(318)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
历史上的今天:
2021-06-10 linux tar包追加问题

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示