binding/binding.go
func Exec(req *http.Request, value interface{}) error {
	if ba, ok := value.(Bindable); ok {
		return ba.Bind(req)
	}

	ct := httpx.ContentType(req)
	if ct == "" {
		return errors.New("blank content type")
	}
	if b, ok := binders[ct]; ok {
		return b(req, value)
	}
	return fmt.Errorf("could not find a binder for %s", ct)
}
func Exec(req *http.Request, value interface{}) error {
	if ba, ok := value.(Bindable); ok {
		return ba.Bind(req)
	}

	ct := httpx.ContentType(req)
	if ct == "" {
		return errors.New("blank content type")
	}
	if b, ok := binders[ct]; ok {
		return b(req, value)
	}
	return fmt.Errorf("could not find a binder for %s", ct)
}
// Exec will bind the interface to the request.Body. The type of binding
// is dependent on the "Content-Type" for the request. If the type
// is "application/json" it will use "json.NewDecoder". If the type
// is "application/xml" it will use "xml.NewDecoder". The default
// binder is "https://github.com/monoculum/formam".