go - 构造 HTTP POST 请求以包括 req 查询,但请求正文中包含 q 值
问题描述
我目前正在尝试使用 Go 中的 HTTP 包发出 POST 请求。在请求的正文中,它需要从 API 调用的查询中提取的“代码”来完成请求。
但是,我首先需要声明 req 以添加查询 URL 值来执行此操作。所以我坚持将 q 声明为 url.Values{},将其传递到我的帖子正文,然后必须在初始 HTTP 声明之后添加值。
但是因为我在添加这些值之前将 q 传递给请求,所以在我发送请求时请求 URL 不包含它们。所以我基本上只是发送一个空白查询(我认为)。
那么如何解决这个问题并将查询详细信息传递给我的 http 请求但访问查询值?
希望这是有道理的——这令人困惑!
这是我的代码:
func Fetch(w http.ResponseWriter, r *http.Request) {
client := &http.Client{}
q := url.Values{}
req, err := http.NewRequest("POST", "https://auth.truelayer-sandbox.com/connect/token", strings.NewReader(q.Encode()))
if err != nil {
log.Print(err)
fmt.Println("Error was not equal to nil at first stage.")
os.Exit(1)
}
q.Add("grant_type", "authorization_code")
q.Add("id", os.Getenv("ID"))
q.Add("secret", os.Getenv("SECRET"))
q.Add("redirect_uri", "https://callback.com")
q.Add("query-param", req.URL.Query().Get("query-param"))
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
fmt.Println("Error sending request to server")
os.Exit(1)
}
respBody, _ := ioutil.ReadAll(resp.Body)
w.WriteHeader(resp.StatusCode)
w.Write(respBody)
}
解决方案
推荐阅读
- square-wire - 无法解析 x 导入
- python - 使用fabric v2 / paramiko传输大文件有困难
- javascript - 如何在多个正则表达式中重用通用模式?
- javascript - javascript切片不使用内置方法
- android - OKHttp Authenticator 不适用于 Retrofit 暂停乐趣
- python - 使用 pandas .agg 执行 value_counts() 两次
- c++ - 如果 std::function 捕获了 unique_ptr,如何复制它?
- shopify - 将 Quickbooks POS 与 Shopify 集成
- javascript - Node http模块-拦截http.request函数时获取请求体
- postgresql - Grafana PostgreSQL 非时间序列图形面板可视化