Перейти к содержимому
ГоМастер

Поиск по урокам

Найдите урок, курс, термин или раздел

Validator ~11 часов 25 уроковпрактика

Validator в Go: полный курс по валидации структур

Каждая форма, каждый API-запрос и каждый конфиг нуждаются в проверке — и go-playground/validator стал стандартом экосистемы: он встроен в Gin, Echo и Fiber, его синтаксис тегов встречается в половине Go-проектов на GitHub.

Курс закрывает библиотеку целиком: теги required/min/max/email/oneof, вложенные структуры и dive для срезов, условные теги, свои функции-валидаторы и StructLevel, человекочитаемые сообщения на русском, интеграция с Gin и Echo, DTO-границы API, валидация конфигов и тесты. Каждый урок — код с построчным разбором, интерактивные задания и честные грабли (забытый nil-чек, дважды зарегистрированный тег).

Чему научитесь

Чему научитесь

  • Валидировать структуры тегами binding и validate
  • Понимать ValidationErrors и писать понятные сообщения
  • Работать с вложенностью, срезами и картами через dive
  • Писать свои функции-валидаторы и StructLevel-правила
  • Интегрировать валидацию в Gin, Echo и chi
  • Тестировать правила и держать один экземпляр validate

Для кого курс

  • Backend-разработчикам, принимающим данные от пользователей
  • Тем, кто видел binding:"required" в Gin, но не знает всей мощи
  • Командам, стандартизирующим обработку ошибок API

Что понадобится

  • Базовый синтаксис Go: структуры, теги, ошибки
  • Желательно любой HTTP-фреймворк курса — интеграции покажем на них

Программа курса: 25 уроков

  1. 1Знакомство: зачем валидация всегда нужнаДырявые API, мусор в базе и цена ручных if.~16 мин · validator go, зачем валидация golang
  2. 2Установка и первая валидацияgo get, validator.New, Validate() и nil против ошибок.~18 мин · go-playground validator установка, validator new
  3. 3Теги required, min, maxОбязательность, длины и диапазоны на примере формы.~18 мин · validator required tag, min max валидация
  4. 4Форматы: email, url, uuid, datetimeПроверка форматов без регулярок руками.~18 мин · validator email tag, validator uuid
  5. 5ValidationErrors: что именно сломалосьField(), Tag(), Param(): разбор структуры ошибки.~18 мин · validationerrors go, validator field tag
  6. 6Русские сообщения об ошибкахСвои тексты для тегов: от тупого «required» к человечности.~20 мин · сообщения валидации go, validator перевод
  7. 7Вложенные структуры: Validate рекурсиейАдрес внутри профиля: проверка всего дерева.~18 мин · вложенные структуры валидация, validator nested
  8. 8Срезы и карты: тег diveВалидация каждого элемента массива, unique.~20 мин · validator dive, валидация слайса go
  9. 9Условные теги: required_without, excluded_withЗависимости полей: если одно есть, другое обязательно.~20 мин · required_without, условная валидация go
  10. 10Свой валидатор-функцияRegisterValidation: тег «телефон» и «не из чёрного списка».~20 мин · registervalidation, кастомный валидатор go
  11. 11StructLevel: правила на всю структуруКросс-польные проверки: пароль и подтверждение.~20 мин · structlevel validation, validator structlevel
  12. 12Валидация в Gin: bindingShouldBindJSON, ShouldBindUri и ошибки по-человечески.~18 мин · gin binding validation, gin validator
  13. 13Echo, chi и свой Validation-хукПодмена валидатора фреймворка своей настройкой.~18 мин · echo validation go, chi валидация
  14. 14Один экземпляр на приложениеКэш структур, thread-safety и цена New.~16 мин · validator singleton, экземпляр validate
  15. 15Нормализация перед валидациейTrimSpace, lower-case: чистим до проверок.~16 мин · нормализация данных go, trim перед валидацией
  16. 16DTO: границы API и внутренние моделиПочему нельзя валидировать домен и как разделять слои.~20 мин · dto api go, слои валидации
  17. 17Валидация JSON-запросовСырой JSON против структур: ошибки до Unmarshal.~18 мин · валидация json go, json запросы валидация
  18. 18Валидация конфигов с ViperПорты, таймауты и env: конфиг тоже проверяем.~18 мин · валидация конфига go, viper validator
  19. 19Тесты правил: таблицы кейсовТабличные тесты: каждый тег — проверен.~18 мин · тесты валидации go, table driven tests
  20. 20Производительность: цена рефлексииКэш структур, горячие пути, когда валидация дорога.~16 мин · validator производительность, валидация hot path
  21. 21Антипаттерны валидацииif err == nil везде, дубли правил, магия в тегах.~18 мин · антипаттерны валидации, ошибки валидации go
  22. 22ПДн и 152-ФЗ: что проверять обязательноТелефоны, email, паспорта: правила и честные ответы.~18 мин · 152-фз валидация, пдн формы go
  23. 23Бизнес-правила против теговЧто нельзя выразить тегом: баланс, лимиты, возраст.~20 мин · бизнес правила валидация, сложная валидация go
  24. 24Единый формат ошибок API400 с деталями: поле, тег, сообщение — как у больших.~20 мин · формат ошибок api, 400 bad request go
  25. 25Итоговый проект: регистрационная формаПолный цикл: DTO, теги, сообщения, тесты, API.~24 мин · validator проект, валидация формы golang

Вопросы о курсе

Почему validator, а не ручные if?

Ручные проверки расползаются по коду и дублируются между хендлерами. Теги описывают правила у поля, а один вызов Validate() проверяет всё дерево — в курсе есть урок с ценой каждого подхода.

Код запускается в песочнице?

Библиотечный код разбирается построчно в браузере, а принципы валидации — обязательность, формат, диапазоны — отрабатываются на интерактивах и тематических программах песочницы на чистом Go.

Подходит ли курс для Fiber и chi?

Да. Validator — библиотека без привязки к фреймворку: отдельные уроки показывают Gin и Echo, а приёмы одинаково работают в Fiber, chi и любом роутере.