Как связать проверки вместе с помощью Golang go-Playground / validator?
Я использую https://github.com/go-playground/validator для сервера REST API. Я использую одну и ту же структуру для разных конечных точек с разными требованиями к проверке. Например,/users/login
требуется только email
а также password
. Однако для создания пользователя требуется дополнительная информация, напримерfirstName
потребуется.
Поэтому я думаю, что использование struct tag для проверки не очень удобно. Проверка переменной, как описано в этом примере, кажется более подходящим. Однако я столкнулся с двумя проблемами:
Я проверяю несколько одновременно. Есть ли способ связать серию проверок вместе? Проверка каждой переменной в структуре с последующей проверкой на наличие ошибок затрудняет кодирование и затрудняет чтение.
Объект ошибки действительно пуст. Например, проверка наличия адреса электронной почты показывает только
err.Tag()
а такжеerr.ActualTag()
какrequired
а такжеerr.Kind()
а такжеerr.Type()
какstring
и ничего больше. Предоставляет ли валидатор что-нибудь, что делает это немного более удобным?
1 ответ
Я использую ozzo-validation. он использует обычные программные конструкции, а не структурные теги, подверженные ошибкам, чтобы указать, как данные должны быть проверены. Я рекомендую вам определять разные функции / методы проверки для каждого варианта использования (запроса).
func ValidateLogin(req) {
err := validation.Validate(req.Username,
validation.Required, //
is.Email)
...
}
func ValidateRegister(req) {
...
}