Documentation
¶
Index ¶
- func Bind(req *protocol.Request, obj interface{}, pathParams param.Params) error
- func BindAndValidate(req *protocol.Request, obj interface{}, pathParams param.Params) error
- func Validate(obj interface{}) error
- type BindConfig
- func (config *BindConfig) MustRegTypeUnmarshal(t reflect.Type, ...)
- func (config *BindConfig) RegTypeUnmarshal(t reflect.Type, fn inDecoder.CustomizeDecodeFunc) error
- func (config *BindConfig) UseStdJSONUnmarshaler()
- func (config *BindConfig) UseThirdPartyJSONUnmarshaler(fn func(data []byte, v interface{}) error)
- type Binder
- type StructValidator
- type ValidateConfig
- type ValidateErrFactory
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func BindAndValidate ¶
BindAndValidate binds data from *protocol.Request to obj and validates them if needed. NOTE:
obj should be a pointer.
Types ¶
type BindConfig ¶ added in v0.7.0
type BindConfig struct {
// LooseZeroMode if set to true,
// the empty string request parameter is bound to the zero value of parameter.
// NOTE:
// The default is false.
// Suitable for these parameter types: query/header/cookie/form .
LooseZeroMode bool
// DisableDefaultTag is used to add default tags to a field when it has no tag
// If is false, the field with no tag will be added default tags, for more automated binding. But there may be additional overhead.
// NOTE:
// The default is false.
DisableDefaultTag bool
// DisableStructFieldResolve is used to generate a separate decoder for a struct.
// If is false, the 'struct' field will get a single inDecoder.structTypeFieldTextDecoder, and use json.Unmarshal for decode it.
// It usually used to add json string to query parameter.
// NOTE:
// The default is false.
DisableStructFieldResolve bool
// EnableDecoderUseNumber is used to call the UseNumber method on the JSON
// Decoder instance. UseNumber causes the Decoder to unmarshal a number into an
// interface{} as a Number instead of as a float64.
// NOTE:
// The default is false.
// It is used for BindJSON().
EnableDecoderUseNumber bool
// EnableDecoderDisallowUnknownFields is used to call the DisallowUnknownFields method
// on the JSON Decoder instance. DisallowUnknownFields causes the Decoder to
// return an error when the destination is a struct and the input contains object
// keys which do not match any non-ignored, exported fields in the destination.
// NOTE:
// The default is false.
// It is used for BindJSON().
EnableDecoderDisallowUnknownFields bool
// TypeUnmarshalFuncs registers customized type unmarshaler.
// NOTE:
// time.Time is registered by default
TypeUnmarshalFuncs map[reflect.Type]inDecoder.CustomizeDecodeFunc
// Validator is used to validate for BindAndValidate()
Validator StructValidator
}
BindConfig contains options for default bind behavior.
func NewBindConfig ¶ added in v0.7.0
func NewBindConfig() *BindConfig
func (*BindConfig) MustRegTypeUnmarshal ¶ added in v0.7.0
func (config *BindConfig) MustRegTypeUnmarshal(t reflect.Type, fn func(req *protocol.Request, params param.Params, text string) (reflect.Value, error))
MustRegTypeUnmarshal registers customized type unmarshaler. It will panic if exist error.
func (*BindConfig) RegTypeUnmarshal ¶ added in v0.7.0
func (config *BindConfig) RegTypeUnmarshal(t reflect.Type, fn inDecoder.CustomizeDecodeFunc) error
RegTypeUnmarshal registers customized type unmarshaler.
func (*BindConfig) UseStdJSONUnmarshaler ¶ added in v0.7.0
func (config *BindConfig) UseStdJSONUnmarshaler()
UseStdJSONUnmarshaler uses encoding/json as json library NOTE:
The current version uses encoding/json by default. UseStdJSONUnmarshaler will remain in effect once it has been called.
func (*BindConfig) UseThirdPartyJSONUnmarshaler ¶ added in v0.7.0
func (config *BindConfig) UseThirdPartyJSONUnmarshaler(fn func(data []byte, v interface{}) error)
UseThirdPartyJSONUnmarshaler uses third-party json library for binding NOTE:
UseThirdPartyJSONUnmarshaler will remain in effect once it has been called.
type Binder ¶ added in v0.7.0
type Binder interface {
Name() string
Bind(*protocol.Request, interface{}, param.Params) error
BindAndValidate(*protocol.Request, interface{}, param.Params) error
BindQuery(*protocol.Request, interface{}) error
BindHeader(*protocol.Request, interface{}) error
BindPath(*protocol.Request, interface{}, param.Params) error
BindForm(*protocol.Request, interface{}) error
BindJSON(*protocol.Request, interface{}) error
BindProtobuf(*protocol.Request, interface{}) error
}
func DefaultBinder ¶ added in v0.7.0
func DefaultBinder() Binder
func NewDefaultBinder ¶ added in v0.7.0
func NewDefaultBinder(config *BindConfig) Binder
type StructValidator ¶ added in v0.7.0
type StructValidator interface {
ValidateStruct(interface{}) error
Engine() interface{}
ValidateTag() string
}
func DefaultValidator ¶ added in v0.7.0
func DefaultValidator() StructValidator
func NewValidator ¶ added in v0.7.0
func NewValidator(config *ValidateConfig) StructValidator
type ValidateConfig ¶ added in v0.7.0
type ValidateConfig struct {
ValidateTag string
ErrFactory ValidateErrFactory
}
func NewValidateConfig ¶ added in v0.7.0
func NewValidateConfig() *ValidateConfig
func (*ValidateConfig) MustRegValidateFunc ¶ added in v0.7.0
func (config *ValidateConfig) MustRegValidateFunc(funcName string, fn func(args ...interface{}) error, force ...bool)
MustRegValidateFunc registers validator function expression. NOTE:
If force=true, allow to cover the existed same funcName. MustRegValidateFunc will remain in effect once it has been called.
func (*ValidateConfig) SetValidatorErrorFactory ¶ added in v0.7.0
func (config *ValidateConfig) SetValidatorErrorFactory(errFactory ValidateErrFactory)
SetValidatorErrorFactory customizes the factory of validation error.
func (*ValidateConfig) SetValidatorTag ¶ added in v0.7.0
func (config *ValidateConfig) SetValidatorTag(tag string)
SetValidatorTag customizes the factory of validation error.
type ValidateErrFactory ¶ added in v0.7.0
Click to show internal directories.
Click to hide internal directories.