优化GET请求对参数的处理

This commit is contained in:
Yun
2023-12-13 14:32:33 +08:00
parent 3a0e1c155a
commit 8b9a77afd5
4 changed files with 75 additions and 10 deletions
+3 -3
View File
@@ -1,10 +1,10 @@
module code.yun.ink/open/curlx
module code.yun.ink/pkg/curlx
go 1.19
require (
github.com/tidwall/gjson v1.15.0
golang.org/x/net v0.14.0
github.com/tidwall/gjson v1.17.0
golang.org/x/net v0.18.0
)
require (
+4 -4
View File
@@ -1,8 +1,8 @@
github.com/tidwall/gjson v1.15.0 h1:5n/pM+v3r5ujuNl4YLZLsQ+UE5jlkLVm7jMzT5Mpolw=
github.com/tidwall/gjson v1.15.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
github.com/tidwall/gjson v1.17.0 h1:/Jocvlh98kcTfpN2+JzGQWQcqrPQwDrVEMApx/M5ZwM=
github.com/tidwall/gjson v1.17.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs=
github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
golang.org/x/net v0.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14=
golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI=
golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg=
golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ=
+44 -3
View File
@@ -13,8 +13,6 @@ import (
"strings"
)
/**
* 处理请求类型
*/
@@ -181,7 +179,50 @@ func (p *CurlParams) parseParams() (str io.Reader, err error) {
}
return strings.NewReader(values.Encode()), nil
} else {
return nil, errors.New("不支持的数据类型")
// 如果是GET请求
if p.Method == MethodGet {
// 判断需要map[string]interface{}类型
paramValue, ok := p.Params.(map[string]interface{})
if !ok {
return strings.NewReader(""), errors.New("参数需map[string]interface{}")
}
// 拼接参数到URL
if strings.Contains(p.Url, "?") {
p.Url += "&"
} else {
p.Url += "?"
}
for k, v := range paramValue {
// 字符串
if v_string, ok := v.(string); ok {
p.Url += k + "=" + v_string + "&"
}
// 字符串切片
if vv, ok := v.([]string); ok {
for _, vvv := range vv {
p.Url += k + "[]=" + vvv + "&"
}
}
// int转string
if v_int, ok := v.(int); ok {
p.Url += k + "=" + strconv.Itoa(v_int) + "&"
}
// int64转string
if v_int64, ok := v.(int64); ok {
p.Url += k + "=" + strconv.FormatInt(v_int64, 10) + "&"
}
// float32转string
if v_float32, ok := v.(float32); ok {
p.Url += k + "=" + strconv.FormatFloat(float64(v_float32), 'f', -1, 32) + "&"
}
// float64转string
if v_float64, ok := v.(float64); ok {
p.Url += k + "=" + strconv.FormatFloat(v_float64, 'f', -1, 64) + "&"
}
}
} else {
return nil, errors.New("curlx 不支持的数据类型")
}
}
}
+24
View File
@@ -40,3 +40,27 @@ type CurlParams struct {
Cookies interface{}
ContentType ContentType // FORM,JSON,XML
}
type UserAgent string
const(
UserAgentChrome UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
UserAgentFirefox UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 "
UserAgentSafari UserAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 "
UserAgentOpera UserAgent = "Opera/9.80 (Windows NT 6.1; WOW64) Presto/2.12.388 Version/12.18 "
UserAgentIE UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; "
UserAgentEdge UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
UserAgentQQ UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; "
UserAgentMaxthon UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 "
UserAgentUC UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 "
UserAgentSougou UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 "
UserAgentLBBROWSER UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 "
UserAgent2345 UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 "
UserAgentQihu UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 "
UserAgentXiaoMi UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 "
UserAgentQuark UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 "
UserAgentQiyu UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 "
UserAgentWechat UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 "
UserAgentTaobao UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 "
)