golang web 封装之 handles

前端之家收集整理的这篇文章主要介绍了golang web 封装之 handles前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

封装方式一、将 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)
})

还可以封装一个 help函数,一个 log方法

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

猜你在找的Go相关文章