github.com/sereiner/library@v0.0.0-20200518095232-1fa3e640cc5f/net/url.go (about) 1 package net 2 3 import ( 4 "bytes" 5 "fmt" 6 "net/url" 7 "strings" 8 ) 9 10 var LocalIP string 11 12 func init() { 13 LocalIP = GetLocalIPAddress() 14 } 15 16 //QueryStringToMap 将URL查询字符串中的参数转换成map 17 func QueryStringToMap(urlQuery string) (result map[string]interface{}, err error) { 18 index := strings.IndexAny(urlQuery, "?") 19 if index == -1 || index >= len(urlQuery)-1 { 20 return 21 } 22 values, err := url.ParseQuery(urlQuery[index+1:]) 23 if err != nil { 24 err = fmt.Errorf("url ParseQuery fail: %v", err) 25 return 26 } 27 result = make(map[string]interface{}) 28 for k, v := range values { 29 if len(v) == 1 { 30 result[k] = v[0] 31 } else { 32 result[k] = v 33 } 34 } 35 36 return 37 } 38 func GetQueryWithMap(data map[string]string) (res string, err error) { 39 buf := bytes.Buffer{} 40 41 for k, v := range data { 42 buf.WriteString(k) 43 buf.WriteString("=") 44 buf.WriteString(url.QueryEscape(v)) 45 buf.WriteString("&") 46 } 47 res = buf.String() 48 res = strings.TrimRight(res, "&") 49 return 50 }