code: func Bind(req *http.Request, userStruct FieldMapper) error {
  	var errs Errors
  
  	contentType := req.Header.Get("Content-Type")
  
  	if strings.Contains(contentType, "form-urlencoded") {
  		return Form(req, userStruct)
  	}
  
  	if strings.Contains(contentType, "multipart/form-data") {
  		return MultipartForm(req, userStruct)
  	}
  
  	if strings.Contains(contentType, "json") {
  		return Json(req, userStruct)
  	}
  
  	if req.Method == http.MethodGet || req.Method == http.MethodHead || (contentType == "" && len(req.URL.Query()) > 0) {
  		return URL(req, userStruct)
  	}
  
  	if contentType == "" {
  		errs.Add([]string{}, ContentTypeError, "Empty Content-Type")
  		errs = validate(errs, req, userStruct)
  	} else {
  		errs.Add([]string{}, ContentTypeError, "Unsupported Content-Type")
  	}
  
  	if len(errs) > 0 {
  		return errs
  	}
  	return nil
  }
docs: // Bind takes data out of the request and deserializes into a struct according
  // to the Content-Type of the request. If no Content-Type is specified, there
  // better be data in the query string, otherwise an error will be produced.
  //
  // A non-nil return value may be an Errors value.