我正在尝试为多个处理程序设置一个 http 标头。我的第一个想法是制作一个自定义写入函数,该函数将在编写响应之前设置标题,如底部的代码示例。
但是,当我传递一个指向 http.ResponseWriter 的指针并尝试从我的函数访问它时,它告诉我“类型 *http.ResponseWriter 没有 Header 方法”。
为多个处理程序设置标头的最佳方法是什么,以及为什么指针不能按我希望的方式工作?
func HelloServer(w http.ResponseWriter, req *http.Request) {
type Message struct {
Name string
Body string
Time int64
}
m := Message{"Alice", "Hello", 1294706395881547000}
b, _ := json.Marshal(m)
WriteJSON(&w, b)
}
func WriteJSON(wr *http.ResponseWriter, rawJSON []byte) {
*wr.Header().Set("Content-Type", "application/json")
io.WriteString(*wr, string(rawJSON))
}
func main() {
http.HandleFunc("/json", HelloServer)
err := http.ListenAndServe(":9000", nil)
if err != nil {
log.Fatal("ListenAndServer: ", err)
}
}
jeck猫
杨__羊羊
相关分类