【发布时间】:2016-10-31 18:51:15
【问题描述】:
我正在尝试使用 gin 框架创建验证器/绑定器中间件。
这是模型
type LoginForm struct{
Email string `json:"email" form:"email" binding:"email,required"`
Password string `json:"password" form:"password" binding:"required"`
}
路由器
router.POST("/login",middlewares.Validator(LoginForm{}) ,controllers.Login)
中间件
func Validator(v interface{}) gin.HandlerFunc{
return func(c *gin.Context){
a := reflect.New(reflect.TypeOf(v))
err:=c.Bind(&a)
if(err!=nil){
respondWithError(401, "Login Error", c)
return
}
c.Set("LoginForm",a)
c.Next()
}
}
我对 golang 很陌生。我知道问题在于绑定到错误的变量。 有没有其他方法可以解决这个问题?
【问题讨论】:
-
传入工厂而不是模型变量。
type ViewFactory func() interface{} -
对不起,我没听懂。能否请您解释更多或提供阅读链接?
标签: go middleware go-gin