前提・実現したいこと
echoに入ってきたリクエストに対して、オリジナルのバリデーションを実行したい。
が、nullの時(送られてきていない時)にバリデーション関数に入ってこない。
nullの時はバリデーションを飛ばし、nullではない時バリデーションを実行させたい。
nullの時はオリジナルのバリデーションを飛ばすようにする方法はありますでしょうか?
エラー error:Key: 'tutorialReq.Keyword' Error:Field validation for 'Keyword' failed on the 'orivali' tag
該当のソースコード
func Tutorial() echo.HandlerFunc { type ( tutorialReq struct { Keyword *string `query:"keyword" validate:"orivali"` } ) return func(c echo.Context) error { reqData := new(tutorialReq) if err := c.Bind(reqData); err != nil { log.Println("error:" + err.Error()) return c.JSON(http.StatusBadRequest, "") } if err := c.Validate(reqData); err != nil { log.Println("error:" + err.Error()) return c.JSON(http.StatusBadRequest, "")) } return c.JSON(http.StatusOK, "") } } //////////////////// func CustomValidateCheck(fl validator.FieldLevel) bool { fmt.Printf("CustomValidateCheck") req := fl.Field().String() if req != "test" { return false } return true } func (cv *CustomValidator) Validate(i interface{}) error { cv.validator.RegisterValidation("orivali", CustomValidateCheck) return cv.validator.Struct(i) }
試したこと
fmt.Printf("CustomValidateCheck") が表示されていないので、そもそもカスタムバリデーション関数に入ってきていないのかな?と思っています。リクエストがnullでないときは、表示されます。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー