如何在HTTP GET请求中添加URL查询参数?

帕特里克:

我正在尝试向HTTP GET请求中添加查询参数,但是以某种方式在SO上指出的方法(例如here)不起作用。

我有以下代码:

package main

import (
    "fmt"
    "log"
    "net/http"
)

func main() {
    req, err := http.NewRequest("GET", "/callback", nil)
    req.URL.Query().Add("code", "0xdead 0xbeef")
    req.URL.Query().Set("code", "0xdead 0xbeef")
    // this doesn't help
    //req.URL.RawQuery = req.URL.Query().Encode()

    if err != nil {
        log.Fatal(err)
    }

    fmt.Printf("URL      %+v\n", req.URL)
    fmt.Printf("RawQuery %+v\n", req.URL.RawQuery)
    fmt.Printf("Query    %+v\n", req.URL.Query())
}

打印:

URL      /callback
RawQuery 
Query    map[]

关于如何实现这一目标的任何建议?

游乐场示例:https : //play.golang.org/p/SYN4yNbCmo

材料:

检查文档req.URL.Query()

Query解析RawQuery并返回相应的值。

由于它“解析RawQuery并返回”所得到的值仅仅是URL查询值的副本,而不是“实时引用”,因此修改该副本不会对原始查询产生任何影响。为了修改原始查询,您必须将分配给原始查询RawQuery

q := req.URL.Query() // Get a copy of the query values.
q.Add("code", "0xdead 0xbeef") // Add a new value to the set.
req.URL.RawQuery = q.Encode() // Encode and assign back to the original query.

// URL      /callback?code=0xdead+0xbeef
// RawQuery code=0xdead+0xbeef
// Query    map[code:[0xdead 0xbeef]]

请注意,您最初尝试执行此操作没有用,因为它只是解析查询值,对其进行编码,然后将其分配回URL:

req.URL.RawQuery = req.URL.Query().Encode()
// This is basically a noop!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何通过OkHttp向HTTP GET请求添加查询参数?

如何在Android中向HTTP GET请求添加参数?

Spring MVC如何在我的控制器方法中获取GET HTTP请求的参数值?

如何在HTTP请求角度中添加令牌

如何在Go HTTP请求中添加PKI证书?

如何在Go中将所有GET请求查询参数放入结构中?

如何在URL中获取查询参数

如何在Angular $ http中添加多个同名查询参数

如何在akka-http中读取查询参数?

如何在Angular2中将Headers添加到http.get请求?

如何使用Javascript / jQuery在URL中添加或替换查询参数?

如何在Ionic 3上将URL参数(查询字符串)传递给HTTP POST请求

如何在URL中添加字典作为查询参数python请求

如何在Http GET请求中容纳超过29个参数

如何在Angular 4的http请求中传递URL参数

如何在Visual Studio中的http Get请求中传递对象参数

如何从URL中获取查询参数以及泛型而不是Spring Boot中GET请求的字符串

如何在我的删除HTTP请求中添加正文

如何在Kotlin的Retrofit @GET请求中添加URL参数

如何在Angular的HTTP发布请求中的URL中传递查询参数

如何在请求URL(Java 11)中添加参数?

如何在python中的http请求上添加csrf令牌?

如何在Restler GET请求中接受任意查询参数?

如何在HTTP请求中将JSON作为查询参数传递?

如何在查询公式中添加<=参数

Rails应用程序-如何在API获取请求中添加查询参数?

如何在 HTTP GET 请求中传递一个简单的整数参数?

如何在docker ZAP OWASP zap-full-scan的每个http请求中添加参数

如何在 Spring Boot 应用程序中存储多个 HTTP 请求查询参数