封装方式一、将 model 和 handle 以及中间层放在不同的包中
main
router.GET("/new",articles.New) router.GET("/articles/:_id",articles.Edit)
handle
func New(c *gin.Context) { article := models.Article{} c.HTML(http.StatusOK,"articles/form",gin.H{ "title": "New article","article": article,}) }
model
// Article model type Article struct { Id bson.ObjectId `json:"_id,omitempty" bson:"_id,omitempty"` Title string `json:"title" form:"title" binding:"required" bson:"title"` Body string `json:"body" form:"body" binding:"required" bson:"body"` CreatedOn int64 `json:"created_on" bson:"created_on"` UpdatedOn int64 `json:"updated_on" bson:"updated_on"` // User bson.ObjectId `json:"user"` }
middleware
router.Use(middlewares.Connect) router.Use(middlewares.ErrorHandler)
封装方式二、将路由函数写好,将参数以参数形式传递给 action
srv.Ws.HandleConnect(func(s *melody.Session) { FireConnect(srv,s) })
func (a *Action) ToLog(g *Game) { PutCards := make([]Card,0) TakeCard := g.CardFromReference(a.TakeCard) for _,id := range a.PutCards { PutCards = append(PutCards,g.CardFromReference(id)) } g.LastLog = &Log{a.PlayerName,a.Name,TakeCard,PutCards,a.Option} }原文链接:https://www.f2er.com/go/188223.html