我正在try 创建一个通用的HTTP请求验证器中间件函数,该函数接受类型(可能是refect.Type)作为参数,然后使用包github.com/go-playground/validator/v10
能够将JSON解组为所述类型的 struct 并验证该 struct .我试着用下面的示例代码来解释...
示例
type LoginRequestBody struct {
Username string `json:"username",validate:"required"`
Password string `json:"password",validate:"required"`
}
type SignupReqBody struct {
Username string `json:"username",validate:"required"`
Password string `json:"password",validate:"required"`
Age int `json:"age",validate:"required"`
}
// sample routers with a common middleware validator function
router.POST("/login", ReqValidate("LoginRequestBody"), LoginController)
router.POST("/signup", ReqValidate("SignupReqBody"), SignupController)
func ReqValidate(<something>) gin.HandlerFunc {
return func (c *gin.Context) {
// unmarshalling JSON into a struct
// common validation logic...
c.Next()
}
}
总体而言,我希望使用Joi包实现与Node.js中相同的验证器灵活性.