下面由golang教程欄目給大家介紹gin框架的優勢,希望對需要的朋友有所幫助!
gin和django對比
中間件
利用函數調用棧后進先出的特點,巧妙的完成中間件在自定義處理函數完成的后處理的操作。
django它的處理方式是定義個類,請求處理前的處理的定義一個方法,請求處理后的處理定義一個方法。
gin的方式更靈活,但django的方式更加清晰。
請求參數綁定
對于獲取請求內容,在模型綁定當中,有以下的場景
- 綁定失敗是用戶自己處理還是框架統一進行處理
- 用戶需是否需要關心請求的內容選擇不同的綁定器
在gin框架的對于這些場景給出的答案是:提供不同的方法,滿足以上的需求。這里的關鍵點還是在于使用場景是怎樣的。
// 自動更加請求頭選擇不同的綁定器對象進行處理 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) }