gpt4 book ai didi

Go 不能同时添加 accept 和 content-type headers

转载 作者:IT王子 更新时间:2023-10-29 02:15:21 29 4
gpt4 key购买 nike

我正在尝试为一个简单的 rest 应用程序编写测试。所以我写了这样的东西:

func TestMyTestFunc(t *testing.T) {
var w = httptest.NewRecorder()
req, err := http.NewRequest("POST", "/", nil)
if err != nil {
t.Errorf("Error creating request: %s", err.Error())
}
// req.Header.Add("Content-Type", "application/json")
// req.Header.Add("Accept", "application/json")
l.ServeHTTP(w, req) // l is defined somewhere above
// check for w.Code, w.Body
}

这工作得很好。现在我想添加标题。所以我添加了注释的标题部分并结束了:

panic: runtime error: invalid memory address or nil pointer dereference [recovered]
panic: runtime error: invalid memory address or nil pointer dereference

错误在这一行:l.ServeHTTP(w, req)

有趣的是,如果我只设置 Content-TypeAccept,测试会运行,但如果我同时设置两者,它就会失败。怎么了?

附言我也尝试使用 req.Header.Set,但没有区别。这是我的处理程序的 stub :

func (l myHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) {
// check for validity
if !valid {
http.Error(w, "Invalid Accept", http.StatusBadRequest)
return
}
w.WriteHeader(http.StatusNoContent)
return
}

最佳答案

我认为您的 http 服务器/处理程序实现有误。我尝试重现它并且成功了。

你可以在这里看到: http://play.golang.org/p/n1YBl3OpbN

关于Go 不能同时添加 accept 和 content-type headers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33730877/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com