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 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 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(h 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