go - http 查询字符串:问号变为 %3
问题描述
试图附加到现有的 queryString,但是 '?' 继续查询字符串被替换为 '%3'
server := "server.com"
endpoint:= "/buildWithParameters?token=<top_secret>"
// concat server and build job
u, err := url.Parse(server)
u.Path = path.Join(u.Path, endpoint)
endpoint := u.String()
// since we are appending to existing querystring, request is needed for parsing
req, err := http.NewRequest("POST", endpoint, nil)
if err != nil {
return fmt.Errorf("Error creating post request: (%v)", err)
}
// read existing query string
q := req.URL.Query()
q.Add("key", "value")
req.URL.RawQuery = q.Encode()
log.Println(req.URL.String())
输出是:
https://server.com/job/jobbyjob/buildWithParameters%3Ftoken=<top_secret>?key=value
解决方案
那是因为您将查询字符串附加到路径中,因此库正确转义?
以生成有效的 URL。如果您想token=<top_secret>
被视为查询的一部分,则需要将其添加到查询中:
endpoint:= "/buildWithParameters"
// ...
q.Add("token", "<top_secret>")
推荐阅读
- python - 在没有互联网的情况下使用 conda 安装 python 包
- c++ - 对 std::array 的引用大小在编译时不可用
- swift - SwiftUI 创建一个字典来保存不同的视图
- arrays - 如何在不使用 segue 的情况下将大量数据从 viewController 传递到另一个?
- javascript - 从扩展泛型中提取类型
- python - load_model 在已经训练好的模型上评估测试数据的准确性非常低
- python - 在 Python 中解析响应
- javascript - 需要帮助 理解 javascript 图库代码
- database - thymeleaf hw 用模型属性填充 th:field 值
- android - 如何使用 ViewGroup 作为过渡动画的共享元素?