github.com/lingyao2333/mo-zero@v1.4.1/rest/httpx/util.go (about)

     1  package httpx
     2  
     3  import "net/http"
     4  
     5  const xForwardedFor = "X-Forwarded-For"
     6  
     7  // GetFormValues returns the form values.
     8  func GetFormValues(r *http.Request) (map[string]interface{}, error) {
     9  	if err := r.ParseForm(); err != nil {
    10  		return nil, err
    11  	}
    12  
    13  	if err := r.ParseMultipartForm(maxMemory); err != nil {
    14  		if err != http.ErrNotMultipart {
    15  			return nil, err
    16  		}
    17  	}
    18  
    19  	params := make(map[string]interface{}, len(r.Form))
    20  	for name := range r.Form {
    21  		formValue := r.Form.Get(name)
    22  		if len(formValue) > 0 {
    23  			params[name] = formValue
    24  		}
    25  	}
    26  
    27  	return params, nil
    28  }
    29  
    30  // GetRemoteAddr returns the peer address, supports X-Forward-For.
    31  func GetRemoteAddr(r *http.Request) string {
    32  	v := r.Header.Get(xForwardedFor)
    33  	if len(v) > 0 {
    34  		return v
    35  	}
    36  
    37  	return r.RemoteAddr
    38  }