Содержание
Первые шаги
Установка
Для cinderguard нужен Go 1.21+. Добавьте библиотеку в проект:
go get github.com/cinderguardhq/cinderguard@latest
Быстрый старт
Вот полная программа, которая использует cinderguard.
package main
import (
"context"
"fmt"
"log"
"github.com/cinderguardhq/cinderguard"
)
func main() {
ctx := context.Background()
v, err := cinderguard.New(cinderguard.Options{
AllowUnknown: false,
MaxErrors: 100,
})
if err != nil {
log.Fatal(err)
}
defer v.Close()
if err := v.Field(ctx, "email", "required|email"); err != nil {
log.Fatal(err)
}
items, err := v.Validate(ctx, []byte("{"email":"ada@example.com"}"))
if err != nil {
log.Fatal(err)
}
fmt.Println(items)
}
Схемы
Схема описывает ожидаемую структуру: поля, их типы и правила, которые каждое должно пройти. Создавайте схемы при запуске и переиспользуйте.
Неизвестные поля по умолчанию отклоняются. Разрешите их явно, если принимаете расширения.
Правила
Правила выполняются в порядке объявления. Если не прошла проверка типа, остальные правила поля пропускаются — вы не получите ошибку диапазона для значения, которое даже не число.
Свои правила пишутся функциями, которые возвращают сообщение об ошибке или ничего.
Ошибки
validate() возвращает список ошибок, у каждой есть путь, код и сообщение. Коды стабильны и подходят для обработки на клиенте; сообщения — для людей.
Сообщения и языки
Сообщения — это шаблоны вроде «должно быть не меньше {min}». Замените таблицу сообщений, чтобы поменять формулировки или язык. Русский перевод входит в поставку.