Documentation
¶
Overview ¶
Package reqx 为基于 net/http 的 JSON API 提供输入侧能力。
它只覆盖 request 边界:
- 单字段 path/query helper:Path、Query
- DTO binder:BindQuery、BindBody
- 请求级显式规则:InvalidRequest
- request-side field error 公开模型:FieldError、FieldErrorCode、FieldErrorIn、Code*、In*
reqx 是请求输入侧的较低层原生面。 对多数 handler 调用方,优先直接使用根包 hah;reqx 主要服务于:
- 拆分 request-side 组件
- 直接依赖输入层公开契约
- 需要显式引用 request-side FieldError / Code* / In* 的场景
Path / Query 是请求侧主路径。它们暴露两个 source root:
- PathParam
- QueryParam
root 之后的公开 builder family 收敛为:
- StringParam
- ValueParam[T]
- OrderedParam[T]
- TimeParam
- MultiParam[T]
这组 builder family 已视为核心公开面,应保持收敛,不轻易继续扩展新的 family、 source root 或隐式 binding 模式。
具体行为以 docs 设计文档为准:
- docs/path-design.md
- docs/query-design.md
- docs/binding-query-design.md
- docs/binding-body-design.md
- docs/public-api-scope.md
Index ¶
- Constants
- func BindBody(r *http.Request, target any) error
- func BindQuery(r *http.Request, target any) error
- func InvalidRequest(fieldErrors ...FieldError) error
- type FieldError
- type FieldErrorCode
- type FieldErrorIn
- type MultiParam
- type OrderedParam
- func (p *OrderedParam[T]) Check(check func(T) error) *OrderedParam[T]
- func (p *OrderedParam[T]) Default(value T) *OrderedParam[T]
- func (p *OrderedParam[T]) Get() (T, error)
- func (p *OrderedParam[T]) Max(value T) *OrderedParam[T]
- func (p *OrderedParam[T]) Min(value T) *OrderedParam[T]
- func (p *OrderedParam[T]) Required() *OrderedParam[T]
- type PathParam
- type QueryParam
- func (p *QueryParam) Bool() *ValueParam[bool]
- func (p *QueryParam) Duration() *OrderedParam[time.Duration]
- func (p *QueryParam) Float64() *OrderedParam[float64]
- func (p *QueryParam) Int() *OrderedParam[int]
- func (p *QueryParam) Int64() *OrderedParam[int64]
- func (p *QueryParam) String() *StringParam
- func (p *QueryParam) Time() *TimeParam
- func (p *QueryParam) UUID() *ValueParam[uuid.UUID]
- func (p *QueryParam) Uint() *OrderedParam[uint]
- func (p *QueryParam) Uint64() *OrderedParam[uint64]
- func (p *QueryParam) UnixTime() *TimeParam
- func (p *QueryParam) Values() *MultiParam[string]
- type StringParam
- func (p *StringParam) Check(check func(string) error) *StringParam
- func (p *StringParam) Default(value string) *StringParam
- func (p *StringParam) Get() (string, error)
- func (p *StringParam) Match(pattern *regexp.Regexp) *StringParam
- func (p *StringParam) MaxLen(n int) *StringParam
- func (p *StringParam) MinLen(n int) *StringParam
- func (p *StringParam) OneOf(values ...string) *StringParam
- func (p *StringParam) Required() *StringParam
- type TimeParam
- func (p *TimeParam) After(value time.Time) *TimeParam
- func (p *TimeParam) Before(value time.Time) *TimeParam
- func (p *TimeParam) Check(check func(time.Time) error) *TimeParam
- func (p *TimeParam) Default(value time.Time) *TimeParam
- func (p *TimeParam) Get() (time.Time, error)
- func (p *TimeParam) Required() *TimeParam
- type ValueParam
Constants ¶
const ( CodeInvalidJSON = "invalid_json" CodeUnsupportedMediaType = "unsupported_media_type" CodeRequestTooLarge = "request_too_large" )
const ( CodeInvalid = errx.CodeInvalid CodeRequired = errx.CodeRequired CodeUnknown = errx.CodeUnknown CodeType = errx.CodeType CodeMultiple = errx.CodeMultiple )
Variables ¶
This section is empty.
Functions ¶
func BindBody ¶ added in v0.2.0
零字节 body 直接 no-op;非空 body 则按 JSON object 输入模型处理, 全部成功后再一次性提交到零值临时对象对应的 target。
func InvalidRequest ¶ added in v0.1.1
func InvalidRequest(fieldErrors ...FieldError) error
InvalidRequest 生成统一的 invalid_request 错误包络。
Types ¶
type FieldErrorCode ¶ added in v0.8.5
type FieldErrorCode = errx.FieldErrorCode
FieldErrorCode 描述公开字段错误码。
type MultiParam ¶ added in v0.6.0
type MultiParam[T any] struct { // contains filtered or unexported fields }
MultiParam 读取并校验多值参数。
func (*MultiParam[T]) Check ¶ added in v0.6.0
func (p *MultiParam[T]) Check(check func([]T) error) *MultiParam[T]
func (*MultiParam[T]) Default ¶ added in v0.6.0
func (p *MultiParam[T]) Default(value []T) *MultiParam[T]
func (*MultiParam[T]) Get ¶ added in v0.6.0
func (p *MultiParam[T]) Get() ([]T, error)
func (*MultiParam[T]) Required ¶ added in v0.6.0
func (p *MultiParam[T]) Required() *MultiParam[T]
type OrderedParam ¶ added in v0.6.0
OrderedParam 读取并校验可比较范围的单值参数。
func (*OrderedParam[T]) Check ¶ added in v0.6.0
func (p *OrderedParam[T]) Check(check func(T) error) *OrderedParam[T]
func (*OrderedParam[T]) Default ¶ added in v0.6.0
func (p *OrderedParam[T]) Default(value T) *OrderedParam[T]
func (*OrderedParam[T]) Get ¶ added in v0.6.0
func (p *OrderedParam[T]) Get() (T, error)
func (*OrderedParam[T]) Max ¶ added in v0.6.0
func (p *OrderedParam[T]) Max(value T) *OrderedParam[T]
func (*OrderedParam[T]) Min ¶ added in v0.6.0
func (p *OrderedParam[T]) Min(value T) *OrderedParam[T]
func (*OrderedParam[T]) Required ¶ added in v0.6.0
func (p *OrderedParam[T]) Required() *OrderedParam[T]
type PathParam ¶ added in v0.4.0
type PathParam struct {
// contains filtered or unexported fields
}
PathParam 表示一个待解析的 path 单参数。
func (*PathParam) Int64 ¶ added in v0.4.2
func (p *PathParam) Int64() *OrderedParam[int64]
Int64 读取 int64 参数。
func (*PathParam) String ¶ added in v0.4.2
func (p *PathParam) String() *StringParam
String 读取 string 参数。
func (*PathParam) UUID ¶ added in v0.4.2
func (p *PathParam) UUID() *ValueParam[uuid.UUID]
UUID 读取 uuid.UUID 参数。
func (*PathParam) Uint ¶ added in v0.4.2
func (p *PathParam) Uint() *OrderedParam[uint]
Uint 读取 uint 参数。
func (*PathParam) Uint64 ¶ added in v0.4.2
func (p *PathParam) Uint64() *OrderedParam[uint64]
Uint64 读取 uint64 参数。
type QueryParam ¶ added in v0.4.0
type QueryParam struct {
// contains filtered or unexported fields
}
QueryParam 表示一个待解析的 query 单参数。
func Query ¶ added in v0.4.1
func Query(r *http.Request, name string) *QueryParam
Query 创建 query 单参数读取与校验 builder。
func (*QueryParam) Bool ¶ added in v0.4.2
func (p *QueryParam) Bool() *ValueParam[bool]
Bool 读取 bool 参数。
func (*QueryParam) Duration ¶ added in v0.4.2
func (p *QueryParam) Duration() *OrderedParam[time.Duration]
Duration 读取 time.Duration 参数。
func (*QueryParam) Float64 ¶ added in v0.4.2
func (p *QueryParam) Float64() *OrderedParam[float64]
Float64 读取 float64 参数。
func (*QueryParam) Int ¶ added in v0.4.2
func (p *QueryParam) Int() *OrderedParam[int]
Int 读取 int 参数。
func (*QueryParam) Int64 ¶ added in v0.4.2
func (p *QueryParam) Int64() *OrderedParam[int64]
Int64 读取 int64 参数。
func (*QueryParam) String ¶ added in v0.4.2
func (p *QueryParam) String() *StringParam
String 读取 string 参数。
func (*QueryParam) Time ¶ added in v0.4.2
func (p *QueryParam) Time() *TimeParam
Time 按严格 RFC3339 读取 time.Time 参数。
func (*QueryParam) UUID ¶ added in v0.4.2
func (p *QueryParam) UUID() *ValueParam[uuid.UUID]
UUID 读取 uuid.UUID 参数。
func (*QueryParam) Uint ¶ added in v0.4.2
func (p *QueryParam) Uint() *OrderedParam[uint]
Uint 读取 uint 参数。
func (*QueryParam) Uint64 ¶ added in v0.4.2
func (p *QueryParam) Uint64() *OrderedParam[uint64]
Uint64 读取 uint64 参数。
func (*QueryParam) UnixTime ¶ added in v0.4.2
func (p *QueryParam) UnixTime() *TimeParam
UnixTime 按恰好 10 个十进制数字的秒级 Unix 时间戳读取 time.Time 参数。
func (*QueryParam) Values ¶ added in v0.4.2
func (p *QueryParam) Values() *MultiParam[string]
Values 读取 query 参数的全部解析后值。
type StringParam ¶ added in v0.4.1
type StringParam struct {
// contains filtered or unexported fields
}
StringParam 读取并校验 string 参数。
func (*StringParam) Check ¶ added in v0.4.1
func (p *StringParam) Check(check func(string) error) *StringParam
func (*StringParam) Default ¶ added in v0.4.1
func (p *StringParam) Default(value string) *StringParam
func (*StringParam) Get ¶ added in v0.4.1
func (p *StringParam) Get() (string, error)
func (*StringParam) Match ¶ added in v0.4.1
func (p *StringParam) Match(pattern *regexp.Regexp) *StringParam
func (*StringParam) MaxLen ¶ added in v0.4.1
func (p *StringParam) MaxLen(n int) *StringParam
func (*StringParam) MinLen ¶ added in v0.4.1
func (p *StringParam) MinLen(n int) *StringParam
func (*StringParam) OneOf ¶ added in v0.4.1
func (p *StringParam) OneOf(values ...string) *StringParam
func (*StringParam) Required ¶ added in v0.4.1
func (p *StringParam) Required() *StringParam
type TimeParam ¶ added in v0.4.1
type TimeParam struct {
// contains filtered or unexported fields
}
TimeParam 读取并校验 time.Time 参数。
type ValueParam ¶ added in v0.6.0
type ValueParam[T any] struct { // contains filtered or unexported fields }
ValueParam 读取并校验通用单值参数。
func (*ValueParam[T]) Check ¶ added in v0.6.0
func (p *ValueParam[T]) Check(check func(T) error) *ValueParam[T]
func (*ValueParam[T]) Default ¶ added in v0.6.0
func (p *ValueParam[T]) Default(value T) *ValueParam[T]
func (*ValueParam[T]) Get ¶ added in v0.6.0
func (p *ValueParam[T]) Get() (T, error)
func (*ValueParam[T]) Required ¶ added in v0.6.0
func (p *ValueParam[T]) Required() *ValueParam[T]