req
req copied to clipboard
query参数排序问题
有些请求,query参数的顺序不能打乱,比如某音的。 如何禁止query参数自动排序?
还有这种?对于这种不符合规范的接口实现,只有自行按顺序拼接下了,下面给个可运行的例子:
package main
import (
"github.com/imroc/req/v3"
"net/url"
"strings"
)
func main() {
req.EnableDebugLog()
params := encodeParams(
"c", "c",
"a", "a",
"3", "3",
"1", "1",
)
req.R().MustGet("https://httpbin.org/get?" + params)
}
func encodeParams(s ...string) string {
ss := []string{}
for i := 0; i < len(s); i += 2 {
if i+1 >= len(s) {
break
}
ss = append(ss, encodeParam(s[i], s[i+1]))
}
return strings.Join(ss, "&")
}
func encodeParam(key, value string) string {
param := make(url.Values)
param.Set(key, value)
return param.Encode()
}
输出:
2022/10/12 14:45:22.250753 DEBUG [req] HTTP/2 GET https://httpbin.org/get?c=c&a=a&3=3&1=1