我在 GORM 中有两个模型如下:
type (
Todo struct {
gorm.Model
EventId int64 `json:"event_id" form:"event_id" binding:"required"`
UserId uint `json:"user_id" form:"user_id"`
DoneUserId uint `json:"done_user_id" form:"done_user_id"`
Groups string `json:"groups" form:"groups"`
DoneAt *time.Time `json:"done_at" form:"done_at"`
TodoEnd time.Time `json:"todo_end" form:"todo_end" binding:"required"`
Priority uint `json:"priority" form:"priority" binding:"required"`
Done bool `json:"done" form:"done"`
Title string `json:"title" form:"title" binding:"required"`
Description string `json:"description" form:"description"`
CreatorId uint `json:"creator_id"`
ChangerId uint `json:"changer_id"`
Event Event
}
)
Run Code Online (Sandbox Code Playgroud)
和
type (
Event struct {
gorm.Model
CustomerId uint `json:"customer_id" form:"customer_id" binding:"required"`
AddressId uint `json:"address_id" form:"address_id" binding:"required"` …Run Code Online (Sandbox Code Playgroud) 我目前正在使用 Go + Gin 开发 API。
API 应包含版本字符串,例如字符串 v1
http://127.0.0.1:3000/v1/user/get_username
Run Code Online (Sandbox Code Playgroud)
那没问题,因为我可以用 Gin 创建一个组
v1 := router.Group("/v1")
v1.GET("/user/get_username", modules.UserGetUsername)
Run Code Online (Sandbox Code Playgroud)
但是...如果我开始一个新的 API 版本“v2”并且函数 UserGetUsername 中的代码没有改变,我必须执行以下操作
v1 := router.Group("/v1")
v1.GET("/user/get_username", modules.UserGetUsername)
v2 := router.Group("/v2")
v2.GET("/user/get_username", modules.UserGetUsername)
Run Code Online (Sandbox Code Playgroud)
有没有更好的解决方案 - 也许是这样的:
v1_v2 := router.Group("/v1").AnotherGroup("/v2")
v1_v2.GET("/user/get_username", modules.UserGetUsername)
Run Code Online (Sandbox Code Playgroud)
谢谢你的建议。