http.NewRequest 在 golang 中将一些承租人转换为 % 值

http.NewRequest in golang converting some charterers to % values

go版本go1.8.1windows/amd64

"net/http" 用于构建 http 请求的包。

req, err := http.NewRequest("GET",`http://domain/_api/Web/GetFolderByServerRelativeUrl('` + root_folder_url + `')?$expand=Folders,Files`, nil)

这里如果我打印 url 它显示

http://domain/_api/Web/GetFolderByServerRelativeUrl%28%27rooturl%27%29?$expand=Folders,Files

不理解为什么 url 解析器在这里将 ' 替换为 %27。 而我需要 ' 在请求时按原样发送。

调用http.NewRequest function calls url.Parse to set the Request.URL. The URL.RequestURI方法获取写入网络的请求URI。

应用程序可以通过设置请求 URL Opaque 字段来覆盖 Parse/RequestURI 所做的任何转换:

req, err := http.NewRequest("GET", "http://domain/", nil)
if err != nil {
   // handle error
}
req.URL.Opaque = `/_api/Web/GetFolderByServerRelativeUrl('` + root_folder_url + `')?$expand=Folders,Files`

在此代码段中,NewRequest 的参数指定请求的协议和主机。不透明值指定写入网络的请求 URI。请求 URI 不包括主机或协议。