Documentation
¶
Index ¶
- Constants
- func IpCaster(value any) (any, error)
- type Caster
- type DefaultValueFunc
- type Getter
- type Option
- func AddGetter(getter Getter) Option
- func AddValidator(validator Validator) Option
- func WithCookieGetter() Option
- func WithCookieGetterByName(name string) Option
- func WithDefault(value any) Option
- func WithDefaultFunc(defaultFunc DefaultValueFunc) Option
- func WithHeaderGetter() Option
- func WithHeaderGetterByName(name string) Option
- func WithUriGetter() Option
- func WithUriGetterByName(name string) Option
- type Param
- func NewIp(name string, logger compogo.Logger) *Param
- func NewParam(name string, logger compogo.Logger, caster Caster, options ...Option) *Param
- func NewParamBool(name string, logger compogo.Logger, options ...Option) *Param
- func NewParamDuration(name string, logger compogo.Logger, options ...Option) *Param
- func NewParamFloat32(name string, logger compogo.Logger, options ...Option) *Param
- func NewParamFloat64(name string, logger compogo.Logger, options ...Option) *Param
- func NewParamInt(name string, logger compogo.Logger, options ...Option) *Param
- func NewParamInt8(name string, logger compogo.Logger, options ...Option) *Param
- func NewParamInt16(name string, logger compogo.Logger, options ...Option) *Param
- func NewParamInt32(name string, logger compogo.Logger, options ...Option) *Param
- func NewParamInt64(name string, logger compogo.Logger, options ...Option) *Param
- func NewParamString(name string, logger compogo.Logger, options ...Option) *Param
- func NewParamTime(name string, logger compogo.Logger, options ...Option) *Param
- func NewParamUint(name string, logger compogo.Logger, options ...Option) *Param
- func NewParamUint8(name string, logger compogo.Logger, options ...Option) *Param
- func NewParamUint16(name string, logger compogo.Logger, options ...Option) *Param
- func NewParamUint32(name string, logger compogo.Logger, options ...Option) *Param
- func NewParamUint64(name string, logger compogo.Logger, options ...Option) *Param
- type Validator
Constants ¶
const ( // HeaderRealIp — заголовок с реальным IP клиента (nginx). HeaderRealIp = "X-REAL-IP" // HeaderForwardedFor — заголовок с цепочкой IP (X-Forwarded-For). HeaderForwardedFor = "X-FORWARDED-FOR" )
Variables ¶
This section is empty.
Functions ¶
Types ¶
type DefaultValueFunc ¶
type DefaultValueFunc func() any
DefaultValueFunc — функция для получения значения по умолчанию.
type Option ¶
Option — функция настройки параметра.
func AddValidator ¶
AddValidator добавляет валидатор для проверки значения параметра.
func WithCookieGetter ¶
func WithCookieGetter() Option
WithCookieGetter добавляет getter для извлечения параметра из cookie. Использует имя параметра, заданное при создании Param.
func WithCookieGetterByName ¶
WithCookieGetterByName добавляет getter для извлечения параметра из cookie с указанием имени параметра.
func WithDefault ¶
WithDefault устанавливает значение по умолчанию для параметра.
func WithDefaultFunc ¶
func WithDefaultFunc(defaultFunc DefaultValueFunc) Option
WithDefaultFunc устанавливает функцию для получения значения по умолчанию. Функция вызывается каждый раз, когда параметр отсутствует в запросе.
func WithHeaderGetter ¶
func WithHeaderGetter() Option
WithHeaderGetter добавляет getter для извлечения параметра из заголовка. Использует имя параметра, заданное при создании Param.
func WithHeaderGetterByName ¶
WithHeaderGetterByName добавляет getter для извлечения параметра из заголовка с указанием имени параметра.
func WithUriGetter ¶
func WithUriGetter() Option
WithUriGetter добавляет getter для извлечения параметра из URL-query. Использует имя параметра, заданное при создании Param.
func WithUriGetterByName ¶
WithUriGetterByName добавляет getter для извлечения параметра из URL-query с указанием имени параметра (полезно, когда имя в запросе отличается от имени в контексте).
type Param ¶
type Param struct {
// contains filtered or unexported fields
}
Param — middleware для извлечения, приведения и валидации параметров из HTTP-запроса.
Поддерживает:
- Извлечение из URL-query, заголовков, cookies
- Приведение к различным типам (string, int, float, bool, time, duration, ip)
- Валидацию значений
- Значения по умолчанию
- Сохранение в контексте запроса
Пример:
userIdParam := NewParamInt("user_id", logger,
WithUriGetter(),
AddValidator(GteValidator(1)),
)
router.Get("/users/:id", userIdParam.Middleware(http.HandlerFunc(handler)))
func NewIp ¶
NewIp создаёт параметр для извлечения IP-адреса клиента. Последовательно проверяет заголовки:
- X-REAL-IP (nginx)
- X-FORWARDED-FOR (proxy/load balancer)
- RemoteAddr (прямое соединение)
Возвращает net.IP.
func NewParam ¶
NewParam создаёт новый параметр с указанными опциями. Принимает имя, логгер, функцию приведения и опции.
func NewParamBool ¶
NewParamBool создаёт параметр типа bool.
func NewParamDuration ¶
NewParamDuration создаёт параметр типа time.Duration.
func NewParamFloat32 ¶
NewParamFloat32 создаёт параметр типа float32.
func NewParamFloat64 ¶
NewParamFloat64 создаёт параметр типа float64.
func NewParamInt ¶
NewParamInt создаёт параметр типа int.
func NewParamInt8 ¶
NewParamInt8 создаёт параметр типа int8.
func NewParamInt16 ¶
NewParamInt16 создаёт параметр типа int16.
func NewParamInt32 ¶
NewParamInt32 создаёт параметр типа int32.
func NewParamInt64 ¶
NewParamInt64 создаёт параметр типа int64.
func NewParamString ¶
NewParamString создаёт параметр строкового типа.
func NewParamTime ¶
NewParamTime создаёт параметр типа time.Time. Поддерживает различные форматы дат (RFC3339, ISO8601, и т.д.).
func NewParamUint ¶
NewParamUint создаёт параметр типа uint.
func NewParamUint8 ¶
NewParamUint8 создаёт параметр типа uint8.
func NewParamUint16 ¶
NewParamUint16 создаёт параметр типа uint16.
func NewParamUint32 ¶
NewParamUint32 создаёт параметр типа uint32.
func NewParamUint64 ¶
NewParamUint64 создаёт параметр типа uint64.
func (*Param) Middleware ¶
Middleware реализует интерфейс http_server.Middleware. Извлекает параметр, приводит к целевому типу, валидирует и сохраняет в контекст. В случае ошибки возвращает 400 Bad Request.
type Validator ¶
Validator — функция проверки корректности значения.
func GteValidator ¶
GteValidator создаёт валидатор, проверяющий что значение >= указанного. Работает с числовыми типами (int, float, и т.д.).
Пример:
param := NewParamInt("age", logger, AddValidator(GteValidator(18)))