Documentation ¶
Index ¶
- Constants
- Variables
- func Bind(r *http.Request, obj interface{}) error
- func BindJSON(r *http.Request, obj interface{}) error
- func BindQuery(r *http.Request, obj interface{}) error
- func BindUri(r *http.Request, obj interface{}) error
- func BindXML(r *http.Request, obj interface{}) error
- func BindYAML(r *http.Request, obj interface{}) error
- func Decode(dst interface{}, src map[string][]string) error
- func DecodeJson(body []byte, obj interface{}) error
- func DecodeMsgPack(r io.Reader, obj interface{}) error
- func DecodeProtobuf(body []byte, obj interface{}) error
- func DecodeXml(body []byte, obj interface{}) error
- func DecodeYaml(body []byte, obj interface{}) error
- func IgnoreUnknownKeys(i bool)
- func MapForm(ptr interface{}, set Setter) error
- func MapFormByTag(ptr interface{}, set Setter, tag string) error
- func MappingByPtr(ptr interface{}, setter Setter, tag string) error
- func MustBindWith(r *http.Request, obj interface{}, b Binding) error
- func NewReq[REQ any](r *http.Request) (*REQ, error)
- func PickDecode(v reflect.Value, src map[string][]string) error
- func RegisterConverter(value interface{}, converterFunc reflecti.StringConverter)
- func SetAliasTag(tag string)
- func SetByKV(value reflect.Value, field reflect.StructField, kv Arg, tagValue string, ...) (isSet bool, err error)
- func SetByMultipartFormFile(value reflect.Value, field reflect.StructField, files []*multipart.FileHeader) (isSet bool, err error)
- func SetTag(tag string)
- func ShouldBind(r *http.Request, obj interface{}) error
- func ShouldBindJSON(r *http.Request, obj interface{}) error
- func ShouldBindQuery(r *http.Request, obj interface{}) error
- func ShouldBindUri(r *http.Request, obj interface{}) error
- func ShouldBindWith(r *http.Request, obj interface{}, b Binding) error
- func ShouldBindXML(r *http.Request, obj interface{}) error
- func ShouldBindYAML(r *http.Request, obj interface{}) error
- func Validate(obj interface{}) error
- func ZeroEmpty(z bool)
- type Arg
- type Args
- type Binding
- type BindingBody
- type ConversionError
- type Decoder
- func (d *Decoder) Decode(dst interface{}, src map[string][]string) error
- func (d *Decoder) IgnoreUnknownKeys(i bool)
- func (d *Decoder) PickDecode(v reflect.Value, src map[string][]string) error
- func (d *Decoder) RegisterConverter(value interface{}, converterFunc reflecti.StringConverter)
- func (d *Decoder) SetAliasTag(tag string)
- func (d *Decoder) ZeroEmpty(z bool)
- type EmptyFieldError
- type Encoder
- type FormSource
- type HeaderSource
- type KVSource
- type MultipartSource
- type SetOptions
- type Setter
- type UnknownKeyError
- type UriSource
Constants ¶
const ( MIMEJSON = "application/json" MIMEHTML = "text/html" MIMEXML = "application/xml" MIMEXML2 = "text/xml" MIMEPlain = "text/plain" MIMEPOSTForm = "application/x-www-form-urlencoded" MIMEMultipartPOSTForm = "multipart/form-data" MIMEPROTOBUF = "application/x-protobuf" MIMEMSGPACK = "application/x-msgpack" MIMEMSGPACK2 = "application/msgpack" MIMEYAML = "application/x-yaml" )
Variables ¶
var ( JSON = jsonBinding{} XML = xmlBinding{} Form = formBinding{} Query = queryBinding{} FormPost = formPostBinding{} FormMultipart = formMultipartBinding{} Uri = uriBinding{} ProtoBuf = protobufBinding{} MsgPack = msgpackBinding{} YAML = yamlBinding{} Header = headerBinding{} )
These implement the Binding interface and can be used to bind the data present in the request to struct instances.
var EnableDecoderDisallowUnknownFields = false
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.
var EnableDecoderUseNumber = false
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.
var Tag = "json"
var Validator = validator.DefaultValidator
Validator is the default validator which implements the StructValidator interface. It uses https://github.com/go-playground/validator/tree/v8.18.2 under the hood.
Functions ¶
func BindUri ¶ added in v1.5.11
MustBindWith binds the passed struct pointer using the specified binding engine. BindUri binds the passed struct pointer using binding.Uri. It will abort the request with HTTP 400 if any error occurs.
func DecodeJson ¶
func DecodeMsgPack ¶
func DecodeProtobuf ¶
func DecodeYaml ¶
func IgnoreUnknownKeys ¶
func IgnoreUnknownKeys(i bool)
func MapFormByTag ¶ added in v1.5.11
func MappingByPtr ¶
func MustBindWith ¶ added in v1.5.11
MustBindWith binds the passed struct pointer using the specified binding engine. It will abort the request with HTTP 400 if any error occurs. See the binding package.
func RegisterConverter ¶
func RegisterConverter(value interface{}, converterFunc reflecti.StringConverter)
RegisterConverter registers a converter function for a custom type.
func SetAliasTag ¶
func SetAliasTag(tag string)
func SetByKV ¶
func SetByKV(value reflect.Value, field reflect.StructField, kv Arg, tagValue string, opt SetOptions) (isSet bool, err error)
func SetByMultipartFormFile ¶
func SetByMultipartFormFile(value reflect.Value, field reflect.StructField, files []*multipart.FileHeader) (isSet bool, err error)
func ShouldBind ¶ added in v1.5.11
ShouldBind checks the Content-Type to select a binding engine automatically, Depending the "Content-Type" header different bindings are used:
"application/json" --> JSON binding "application/xml" --> XML binding
otherwise --> returns an error It parses the request's body as JSON if Content-Type == "application/json" using JSON or XML as a JSON input. It decodes the json payload into the struct specified as a pointer. Like c.GinBind() but this method does not set the response status code to 400 and abort if the json is not valid.
func ShouldBindJSON ¶ added in v1.5.11
ShouldBindJSON is a shortcut for c.ShouldBindWith(obj, binding.JSON).
func ShouldBindQuery ¶ added in v1.5.11
ShouldBindQuery is a shortcut for c.ShouldBindWith(obj, binding.Query).
func ShouldBindUri ¶ added in v1.5.11
ShouldBindUri binds the passed struct pointer using the specified binding engine.
func ShouldBindWith ¶ added in v1.5.11
ShouldBindWith binds the passed struct pointer using the specified binding engine. See the binding package.
func ShouldBindXML ¶ added in v1.5.11
ShouldBindXML is a shortcut for c.ShouldBindWith(obj, binding.XML).
func ShouldBindYAML ¶ added in v1.5.11
ShouldBindYAML is a shortcut for c.ShouldBindWith(obj, binding.YAML).
Types ¶
type Binding ¶
Binding describes the interface which needs to be implemented for binding the data present in the request such as JSON request body, query parameters or the form POST.
type BindingBody ¶
BindingBody adds BindBody method to Binding. BindBody is similar with GinBind, but it reads the body from supplied bytes instead of req.Body.
type ConversionError ¶
type ConversionError struct { Key string // key from the source map. Type reflect.Type // expected type of elem Index int // index for multi-value fields; -1 for single-value fields. Err error // low-level error (when it exists) }
ConversionError stores information about a failed conversion.
func (ConversionError) Error ¶
func (e ConversionError) Error() string
type Decoder ¶
type Decoder struct {
// contains filtered or unexported fields
}
Decoder decodes values from a map[string][]string to a struct.
func DefaultDecoder ¶
func DefaultDecoder() *Decoder
func (*Decoder) Decode ¶
Decode decodes a map[string][]string to a struct.
The first parameter must be a pointer to a struct.
The second parameter is a map, typically url.Values from an HTTP request. Keys are "paths" in dotted notation to the struct fields and nested structs.
See the package documentation for a full explanation of the mechanics.
func (*Decoder) IgnoreUnknownKeys ¶
IgnoreUnknownKeys controls the behaviour when the decoder encounters unknown keys in the map. If i is true and an unknown field is encountered, it is ignored. This is similar to how unknown keys are handled by encoding/json. If i is false then Decode will return an error. Note that any valid keys will still be decoded in to the target struct.
To preserve backwards compatibility, the default value is false.
func (*Decoder) PickDecode ¶
func (*Decoder) RegisterConverter ¶
func (d *Decoder) RegisterConverter(value interface{}, converterFunc reflecti.StringConverter)
RegisterConverter registers a converter function for a custom type.
func (*Decoder) SetAliasTag ¶
SetAliasTag changes the Tag used to locate custom field aliases. The default Tag is "schema".
func (*Decoder) ZeroEmpty ¶
ZeroEmpty controls the behaviour when the decoder encounters empty values in a map. If z is true and a key in the map has the empty string as a value then the corresponding struct field is set to the zero value. If z is false then empty strings are ignored.
The default value is false, that is empty values do not change the value of the struct field.
type EmptyFieldError ¶
type EmptyFieldError struct {
Key string // required key in the source map.
}
EmptyFieldError stores information about an empty required field.
func (EmptyFieldError) Error ¶
func (e EmptyFieldError) Error() string
type Encoder ¶
type Encoder struct {
// contains filtered or unexported fields
}
Encoder encodes values from a struct into url.Values.
func (*Encoder) Encode ¶
Encode encodes a struct into map[string][]string.
Intended for use with url.Values.
func (*Encoder) RegisterEncoder ¶
RegisterEncoder registers a converter for encoding a custom type.
func (*Encoder) SetAliasTag ¶
SetAliasTag changes the Tag used to locate custom field aliases. The default Tag is "schema".
type FormSource ¶
func (FormSource) TrySet ¶
func (form FormSource) TrySet(value reflect.Value, field reflect.StructField, tagValue string, opt SetOptions) (isSet bool, err error)
TrySet tries to set a value by request's form source (like map[string][]string)
type HeaderSource ¶
func (HeaderSource) TrySet ¶
func (hs HeaderSource) TrySet(value reflect.Value, field reflect.StructField, tagValue string, opt SetOptions) (isSet bool, err error)
type MultipartSource ¶ added in v1.5.11
func (*MultipartSource) TrySet ¶ added in v1.5.11
func (r *MultipartSource) TrySet(value reflect.Value, field reflect.StructField, key string, opt SetOptions) (isSet bool, err error)
TrySet tries to set a value by the multipart request with the binding a form file
type SetOptions ¶
type SetOptions struct {
// contains filtered or unexported fields
}
type Setter ¶
type Setter interface {
TrySet(value reflect.Value, field reflect.StructField, key string, opt SetOptions) (isSet bool, err error)
}
Setter tries to set value on a walking by fields of a struct
type UnknownKeyError ¶
type UnknownKeyError struct {
Key string // key from the source map.
}
UnknownKeyError stores information about an unknown key in the source map.
func (UnknownKeyError) Error ¶
func (e UnknownKeyError) Error() string