cinderguard
Содержание

Первые шаги

Установка

Для 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}». Замените таблицу сообщений, чтобы поменять формулировки или язык. Русский перевод входит в поставку.