Documentation
¶
Index ¶
- Variables
- func NewInput(inputStruct interface{}, opts ...Option) middleware
- func RegisterDirectiveExecutor(name string, exe DirectiveExecutor, norm DirectiveNormalizer)
- func RegisterTypeDecoder(typ reflect.Type, decoder TypeDecoder)
- func ReplaceDefaultErrorHandler(custom ErrorHandler)
- func ReplaceDirectiveExecutor(name string, exe DirectiveExecutor, norm DirectiveNormalizer)
- func ReplaceTypeDecoder(typ reflect.Type, decoder TypeDecoder)
- func UseGochiURLParam(executor string, fn GochiURLParamFunc)
- func UseGorillaMux(executor string, fnVars GorillaMuxVarsFunc)
- type ContextKey
- type Directive
- type DirectiveContext
- type DirectiveExecutor
- type DirectiveExecutorFunc
- type DirectiveNormalizer
- type DirectiveNormalizerFunc
- type Engine
- type ErrorHandler
- type GochiURLParamFunc
- type GorillaMuxVarsFunc
- type InvalidFieldError
- type JSONBody
- type Option
- type TypeDecoder
- type TypeDecoderFunc
- type UnsupportedTypeError
- type XMLBody
Constants ¶
This section is empty.
Variables ¶
var ( ErrMissingField = errors.New("missing required field") ErrUnsupporetedType = errors.New("unsupported type") ErrUnregisteredExecutor = errors.New("unregistered executor") ErrDuplicateTypeDecoder = errors.New("duplicate type decoder") ErrNilTypeDecoder = errors.New("nil type decoder") ErrDuplicateExecutor = errors.New("duplicate executor") ErrNilExecutor = errors.New("nil executor") ErrUnknownBodyType = errors.New("unknown body type") ErrDuplicateAnnotationField = errors.New("duplicate annotation field") ErrNilErrorHandler = errors.New("nil error handler") )
Functions ¶
func NewInput ¶
func NewInput(inputStruct interface{}, opts ...Option) middleware
NewInput creates a "Middleware Constructor" for making a chain, which acts as a list of http.Handler constructors. We recommend using https://github.com/justinas/alice to chain your HTTP middleware functions and the app handler.
func RegisterDirectiveExecutor ¶
func RegisterDirectiveExecutor(name string, exe DirectiveExecutor, norm DirectiveNormalizer)
RegisterDirectiveExecutor registers a named executor globally, which implemented the DirectiveExecutor interface. Will panic if the name were taken or nil executor.
func RegisterTypeDecoder ¶ added in v0.2.2
func RegisterTypeDecoder(typ reflect.Type, decoder TypeDecoder)
RegisterTypeDecoder registers a specific type decoder. Panics on conflicts.
func ReplaceDefaultErrorHandler ¶ added in v0.6.1
func ReplaceDefaultErrorHandler(custom ErrorHandler)
func ReplaceDirectiveExecutor ¶
func ReplaceDirectiveExecutor(name string, exe DirectiveExecutor, norm DirectiveNormalizer)
ReplaceDirectiveExecutor works like RegisterDirectiveExecutor without panic on duplicate names.
func ReplaceTypeDecoder ¶ added in v0.2.2
func ReplaceTypeDecoder(typ reflect.Type, decoder TypeDecoder)
ReplaceTypeDecoder replaces a specific type decoder.
func UseGochiURLParam ¶ added in v0.3.0
func UseGochiURLParam(executor string, fn GochiURLParamFunc)
func UseGorillaMux ¶
func UseGorillaMux(executor string, fnVars GorillaMuxVarsFunc)
UseGorillaMux registers a new directive executor which can extract path variables from the URL. Which works as an accompany to gorilla's mux package.
Example:
UseGorillaMux("path", mux.Vars) type GetUserInput struct { UserID `httpin:"path=user_id"` }
Types ¶
type ContextKey ¶
type ContextKey int
const ( Input ContextKey = iota // the primary key to get the input object in the context injected by httpin // Set this context value to true to indicate that the field has been set. // When multiple executors were applied to a field, if the field value were set by // an executor, the latter executors may skip running by consulting this context value. FieldSet StopRecursion )
type Directive ¶ added in v0.4.0
Directive defines the profile to locate an httpin.DirectiveExecutor instance and drive it with essential arguments.
func (*Directive) Execute ¶ added in v0.4.0
func (d *Directive) Execute(ctx *DirectiveContext) error
Execute locates the executor and runs it with the specified context.
type DirectiveContext ¶
type DirectiveContext struct { Directive ValueType reflect.Type Value reflect.Value Request *http.Request Context context.Context }
DirectiveContext holds essential information about the field being resolved and the active HTTP request. Working as the context in a directive executor.
func (*DirectiveContext) DeliverContextValue ¶
func (c *DirectiveContext) DeliverContextValue(key, value interface{})
DeliverContextValue binds a value to the specified key in the context. And it will be delivered among the executors in the same field resolver.
type DirectiveExecutor ¶
type DirectiveExecutor interface {
Execute(*DirectiveContext) error
}
DirectiveExecutor is the interface implemented by a "directive executor".
type DirectiveExecutorFunc ¶
type DirectiveExecutorFunc func(*DirectiveContext) error
DirectiveExecutorFunc is an adpator to allow to use of ordinary functions as httpin.DirectiveExecutor.
func (DirectiveExecutorFunc) Execute ¶
func (f DirectiveExecutorFunc) Execute(ctx *DirectiveContext) error
Execute calls f(ctx).
type DirectiveNormalizer ¶ added in v0.4.0
type DirectiveNormalizerFunc ¶ added in v0.4.0
DirectiveNormalizerFunc is an adaptor to allow to use of ordinary functions as httpin.DirectiveNormalizer.
func (DirectiveNormalizerFunc) Normalize ¶ added in v0.4.0
func (f DirectiveNormalizerFunc) Normalize(dir *Directive) error
Normalize calls f(dir).
type Engine ¶ added in v0.2.1
type Engine struct {
// contains filtered or unexported fields
}
Engine holds the information on how to decode a request to an instance of a concrete struct type.
type ErrorHandler ¶ added in v0.6.0
type ErrorHandler = func(w http.ResponseWriter, r *http.Request, err error)
type GochiURLParamFunc ¶ added in v0.3.0
GochiURLParamFunc is chi.URLParam
type GorillaMuxVarsFunc ¶ added in v0.3.0
GorillaMuxVarsFunc is mux.Vars
type InvalidFieldError ¶
type InvalidFieldError struct { // Field is the name of the field. Field string `json:"field"` // Source is the directive which causes the error. // e.g. form, header, required, etc. Source string `json:"source"` // Value is the input data. Value interface{} `json:"value"` // ErrorMessage is the string representation of `internalError`. ErrorMessage string `json:"error"` // directives is the list of directives bound to the field. Directives []*Directive `json:"-"` // contains filtered or unexported fields }
func (*InvalidFieldError) Error ¶
func (f *InvalidFieldError) Error() string
func (*InvalidFieldError) Unwrap ¶
func (f *InvalidFieldError) Unwrap() error
type Option ¶ added in v0.6.0
func WithErrorHandler ¶ added in v0.6.0
func WithErrorHandler(custom ErrorHandler) Option
WithErrorHandler overrides the default error handler.
type TypeDecoder ¶ added in v0.2.2
type TypeDecoder = internal.TypeDecoder
TypeDecoder is the interface implemented by types that can decode bytes to themselves.
type TypeDecoderFunc ¶ added in v0.2.2
type TypeDecoderFunc = internal.TypeDecoderFunc
TypeDecoderFunc is an adaptor to allow the use of ordinary functions as httpin TypeDecoders.
type UnsupportedTypeError ¶
func (UnsupportedTypeError) Error ¶
func (e UnsupportedTypeError) Error() string
func (UnsupportedTypeError) Unwrap ¶
func (e UnsupportedTypeError) Unwrap() error