param

package
v1.0.1-rc1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 23, 2026 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// HeaderRealIp — заголовок с реальным IP клиента (nginx).
	HeaderRealIp = "X-REAL-IP"

	// HeaderForwardedFor — заголовок с цепочкой IP (X-Forwarded-For).
	HeaderForwardedFor = "X-FORWARDED-FOR"
)

Variables

This section is empty.

Functions

func IpCaster

func IpCaster(value any) (any, error)

IpCaster преобразует строку в net.IP. Поддерживает X-Forwarded-For с несколькими IP (берёт первый валидный).

Types

type Caster

type Caster func(any) (any, error)

Caster — функция преобразования строкового значения в целевой тип.

type DefaultValueFunc

type DefaultValueFunc func() any

DefaultValueFunc — функция для получения значения по умолчанию.

type Getter

type Getter func(request *http.Request) string

Getter — функция извлечения строкового значения из HTTP-запроса.

type Option

type Option func(param *Param) *Param

Option — функция настройки параметра.

func AddGetter

func AddGetter(getter Getter) Option

AddGetter добавляет произвольный getter для извлечения параметра.

func AddValidator

func AddValidator(validator Validator) Option

AddValidator добавляет валидатор для проверки значения параметра.

func WithCookieGetter

func WithCookieGetter() Option

WithCookieGetter добавляет getter для извлечения параметра из cookie. Использует имя параметра, заданное при создании Param.

func WithCookieGetterByName

func WithCookieGetterByName(name string) Option

WithCookieGetterByName добавляет getter для извлечения параметра из cookie с указанием имени параметра.

func WithDefault

func WithDefault(value any) Option

WithDefault устанавливает значение по умолчанию для параметра.

func WithDefaultFunc

func WithDefaultFunc(defaultFunc DefaultValueFunc) Option

WithDefaultFunc устанавливает функцию для получения значения по умолчанию. Функция вызывается каждый раз, когда параметр отсутствует в запросе.

func WithHeaderGetter

func WithHeaderGetter() Option

WithHeaderGetter добавляет getter для извлечения параметра из заголовка. Использует имя параметра, заданное при создании Param.

func WithHeaderGetterByName

func WithHeaderGetterByName(name string) Option

WithHeaderGetterByName добавляет getter для извлечения параметра из заголовка с указанием имени параметра.

func WithUriGetter

func WithUriGetter() Option

WithUriGetter добавляет getter для извлечения параметра из URL-query. Использует имя параметра, заданное при создании Param.

func WithUriGetterByName

func WithUriGetterByName(name string) Option

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

func NewIp(name string, logger compogo.Logger) *Param

NewIp создаёт параметр для извлечения IP-адреса клиента. Последовательно проверяет заголовки:

  • X-REAL-IP (nginx)
  • X-FORWARDED-FOR (proxy/load balancer)
  • RemoteAddr (прямое соединение)

Возвращает net.IP.

func NewParam

func NewParam(name string, logger compogo.Logger, caster Caster, options ...Option) *Param

NewParam создаёт новый параметр с указанными опциями. Принимает имя, логгер, функцию приведения и опции.

func NewParamBool

func NewParamBool(name string, logger compogo.Logger, options ...Option) *Param

NewParamBool создаёт параметр типа bool.

func NewParamDuration

func NewParamDuration(name string, logger compogo.Logger, options ...Option) *Param

NewParamDuration создаёт параметр типа time.Duration.

func NewParamFloat32

func NewParamFloat32(name string, logger compogo.Logger, options ...Option) *Param

NewParamFloat32 создаёт параметр типа float32.

func NewParamFloat64

func NewParamFloat64(name string, logger compogo.Logger, options ...Option) *Param

NewParamFloat64 создаёт параметр типа float64.

func NewParamInt

func NewParamInt(name string, logger compogo.Logger, options ...Option) *Param

NewParamInt создаёт параметр типа int.

func NewParamInt8

func NewParamInt8(name string, logger compogo.Logger, options ...Option) *Param

NewParamInt8 создаёт параметр типа int8.

func NewParamInt16

func NewParamInt16(name string, logger compogo.Logger, options ...Option) *Param

NewParamInt16 создаёт параметр типа int16.

func NewParamInt32

func NewParamInt32(name string, logger compogo.Logger, options ...Option) *Param

NewParamInt32 создаёт параметр типа int32.

func NewParamInt64

func NewParamInt64(name string, logger compogo.Logger, options ...Option) *Param

NewParamInt64 создаёт параметр типа int64.

func NewParamString

func NewParamString(name string, logger compogo.Logger, options ...Option) *Param

NewParamString создаёт параметр строкового типа.

func NewParamTime

func NewParamTime(name string, logger compogo.Logger, options ...Option) *Param

NewParamTime создаёт параметр типа time.Time. Поддерживает различные форматы дат (RFC3339, ISO8601, и т.д.).

func NewParamUint

func NewParamUint(name string, logger compogo.Logger, options ...Option) *Param

NewParamUint создаёт параметр типа uint.

func NewParamUint8

func NewParamUint8(name string, logger compogo.Logger, options ...Option) *Param

NewParamUint8 создаёт параметр типа uint8.

func NewParamUint16

func NewParamUint16(name string, logger compogo.Logger, options ...Option) *Param

NewParamUint16 создаёт параметр типа uint16.

func NewParamUint32

func NewParamUint32(name string, logger compogo.Logger, options ...Option) *Param

NewParamUint32 создаёт параметр типа uint32.

func NewParamUint64

func NewParamUint64(name string, logger compogo.Logger, options ...Option) *Param

NewParamUint64 создаёт параметр типа uint64.

func (*Param) Middleware

func (param *Param) Middleware(next http.Handler) http.Handler

Middleware реализует интерфейс http_server.Middleware. Извлекает параметр, приводит к целевому типу, валидирует и сохраняет в контекст. В случае ошибки возвращает 400 Bad Request.

func (*Param) Name

func (param *Param) Name() string

Name возвращает имя параметра.

type Validator

type Validator func(any) error

Validator — функция проверки корректности значения.

func GteValidator

func GteValidator(val float64) Validator

GteValidator создаёт валидатор, проверяющий что значение >= указанного. Работает с числовыми типами (int, float, и т.д.).

Пример:

param := NewParamInt("age", logger, AddValidator(GteValidator(18)))

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL