我正在尝试创建一个通用的 HTTP 请求验证器中间件函数,该函数接受类型(可能是 reflect.Type)作为参数,然后使用该包github.com/go-playground/validator/v10将 JSON 解组为上述类型的结构并验证该结构。我试图用下面的示例代码来解释......
例子
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 中相同的验证器灵活性。
回首忆惘然
郎朗坤
相关分类