Как связать проверки вместе с помощью Golang go-Playground / validator?

Я использую https://github.com/go-playground/validator для сервера REST API. Я использую одну и ту же структуру для разных конечных точек с разными требованиями к проверке. Например,/users/login требуется только email а также password. Однако для создания пользователя требуется дополнительная информация, напримерfirstName потребуется.

Поэтому я думаю, что использование struct tag для проверки не очень удобно. Проверка переменной, как описано в этом примере, кажется более подходящим. Однако я столкнулся с двумя проблемами:

  1. Я проверяю несколько одновременно. Есть ли способ связать серию проверок вместе? Проверка каждой переменной в структуре с последующей проверкой на наличие ошибок затрудняет кодирование и затрудняет чтение.

  2. Объект ошибки действительно пуст. Например, проверка наличия адреса электронной почты показывает только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) {
...
}
Другие вопросы по тегам