You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
go-zero/rest/httpx/util.go

39 lines
750 B
Go

package httpx
4 years ago
import "net/http"
const xForwardedFor = "X-Forwarded-For"
4 years ago
// GetFormValues returns the form values.
func GetFormValues(r *http.Request) (map[string]any, error) {
if err := r.ParseForm(); err != nil {
return nil, err
}
if err := r.ParseMultipartForm(maxMemory); err != nil {
if err != http.ErrNotMultipart {
return nil, err
}
}
params := make(map[string]any, len(r.Form))
for name := range r.Form {
formValue := r.Form.Get(name)
if len(formValue) > 0 {
params[name] = formValue
}
}
return params, nil
}
// GetRemoteAddr returns the peer address, supports X-Forward-For.
4 years ago
func GetRemoteAddr(r *http.Request) string {
v := r.Header.Get(xForwardedFor)
4 years ago
if len(v) > 0 {
return v
}
4 years ago
return r.RemoteAddr
}