为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 Go newRequest 方法

如何使用 Go newRequest 方法

Go
守着星空守着你 2021-12-13 18:28:48
所以,我刚刚开始使用 Go,我正在尝试学习HTTP包。我在网上找到了这个程序headers := make(map[string]string)headers["authorization"] = "1432536546" //the auhorization stringurl :=    "anUrl\"req, err := http.NewRequest("DELETE", url, headers)if err != nil {    panic(err)}但这是错误的,因为看起来你不能使用这样的地图,因为它们没有实现io.Reader接口:  cannot use headers (type map[string]string) as type io.Reader in argument to http.NewRequest:  map[string]string does not implement io.Reader (missing Read method)这是我尝试的第一批代码片段之一,实际上我是从我认为可靠的来源中获得的,显然它无法编译。Go 看起来很有趣,但它的教程和有用的文档几乎为零……请帮助我,正确的方法是什么?
查看完整描述

2 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

第三个参数是Body,用于 POST 请求。它不适用于标题。要添加标题,


req, err := http.NewRequest("DELETE", url, nil)

if err != nil{

    panic(err);

}


req.Header.Add("Authorization","1432536546") //string, string

Go 文档确实提供了几个示例。这是本Overview节中的第一个示例。


查看完整回答
反对 回复 2021-12-13
?
蛊毒传说

TA贡献1895条经验 获得超3个赞

你的假设是正确的,你不能使用NewRequest从方法net/http封装的方式。


此外,它没有多大意义,因为NewRequest函数的第三个参数应该是请求的正文有效负载,而不是标头。


func NewRequest(method, urlStr string, body io.Reader) (*Request, error)

假设库没有错,我的假设是http这里的net/http包不是包,而是作为http. 事实上,如果你导入


import (

  "github.com/foobar/someclient/http"

)

它也将被引用为http。您应该检查文件的导入。


仅供参考,添加标题的正确方法是:


req, err := http.NewRequest("DELETE", "/path/to/something", nil)

if err != nil {

    // do something

}

req.Header.Add("authorization", "1432536546")


查看完整回答
反对 回复 2021-12-13
  • 2 回答
  • 0 关注
  • 254 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号