优化GET请求对参数的处理
This commit is contained in:
@@ -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 (
|
||||
|
||||
@@ -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
@@ -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 不支持的数据类型")
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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 "
|
||||
)
|
||||
Reference in New Issue
Block a user