完成formurlencode参数解析
This commit is contained in:
parent
60c07d090b
commit
c52df773ac
@ -9,6 +9,7 @@ package request
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"io"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strings"
|
||||
@ -81,6 +82,9 @@ func ParseGetRequestBody(ctx *gin.Context) (map[string]interface{}, error) {
|
||||
queryArr := strings.Split(urlRaw, "&")
|
||||
for _, itemPair := range queryArr {
|
||||
itemPairArr := strings.Split(itemPair, "=")
|
||||
if len(itemPairArr) == 0 {
|
||||
continue
|
||||
}
|
||||
if len(itemPairArr) == 1 {
|
||||
result[itemPairArr[0]] = ""
|
||||
} else {
|
||||
@ -141,14 +145,36 @@ func ParsePostRequestForApplicationFormURLEncoded(ctx *gin.Context) (map[string]
|
||||
var (
|
||||
err error
|
||||
result map[string]interface{}
|
||||
byteData []byte
|
||||
)
|
||||
|
||||
if err = ctx.Request.ParseForm(); nil != err {
|
||||
if byteData, err = io.ReadAll(ctx.Request.Body); nil != err {
|
||||
return make(map[string]interface{}), err
|
||||
}
|
||||
if err = util.JSONUnmarshalWithNumberForIOReader(ctx.Request.Body, &result); nil != err {
|
||||
return make(map[string]interface{}), err
|
||||
|
||||
tmpResult := make(map[string][]string)
|
||||
orgArr := strings.Split(string(byteData), "&")
|
||||
for _, kvPair := range orgArr {
|
||||
kv := strings.Split(kvPair, "=")
|
||||
if len(kv) == 0 {
|
||||
continue
|
||||
}
|
||||
|
||||
if _, exist := tmpResult[kv[0]]; !exist {
|
||||
tmpResult[kv[0]] = make([]string, 0)
|
||||
}
|
||||
if len(kv) == 1 {
|
||||
tmpResult[kv[0]] = append(tmpResult[kv[0]], "")
|
||||
} else {
|
||||
tmpResult[kv[0]] = append(tmpResult[kv[0]], strings.Join(kv[1:], "="))
|
||||
}
|
||||
}
|
||||
|
||||
result = make(map[string]interface{})
|
||||
for k, v := range tmpResult {
|
||||
result[k] = v
|
||||
}
|
||||
|
||||
return result, err
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user