Utilisez la fonctionnalité dernier entré, premier sorti de la pile d'appels de fonction pour terminer intelligemment les opérations de post-traitement effectuées par le middleware dans le traitement personnalisé fonction.
La méthode de traitement de Django consiste à définir une classe, à définir une méthode de traitement avant le traitement de la demande et à définir une méthode de traitement après le traitement de la demande.
La méthode gin est plus flexible, mais la méthode django est plus claire.
Liaison des paramètres de requête
Pour obtenir le contenu de la requête, dans la liaison de modèle, il existe les scénarios suivants
- L'échec de la liaison est le cas l'utilisateur le gère lui-même ou le framework doit-il le gérer de manière uniforme ?
- L'utilisateur doit-il se soucier du contenu de la demande et choisir un classeur différent
La réponse donnée dans le fichier ? Le cadre de gin pour ces scénarios est le suivant : Fournir différentes méthodes pour répondre aux besoins ci-dessus. Le point clé ici réside toujours dans le scénario d’utilisation.
// 自动更加请求头选择不同的绑定器对象进行处理 func (c *Context) Bind(obj interface{}) error { b := binding.Default(c.Request.Method, c.ContentType()) return c.MustBindWith(obj, b) } // 绑定失败后,框架会进行统一的处理 func (c *Context) MustBindWith(obj interface{}, b binding.Binding) (err error) { if err = c.ShouldBindWith(obj, b); err != nil { c.AbortWithError(400, err).SetType(ErrorTypeBind) } return } // 用户可以自行选择绑定器,自行对出错处理。自行选择绑定器,这也意味着用户可以自己实现绑定器。 // 例如:嫌弃默认的json处理是用官方的json处理包,嫌弃它慢,可以自己实现Binding接口 func (c *Context) ShouldBindWith(obj interface{}, b binding.Binding) error { return b.Bind(c.Request, obj) }