第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 go 中為多個處理程序設置 http 標頭

在 go 中為多個處理程序設置 http 標頭

Go
郎朗坤 2021-06-20 09:17:41
我正在嘗試為多個處理程序設置一個 http 標頭。我的第一個想法是制作一個自定義寫入函數(shù),該函數(shù)將在編寫響應之前設置標題,如底部的代碼示例。但是,當我傳遞一個指向 http.ResponseWriter 的指針并嘗試從我的函數(shù)訪問它時,它告訴我“類型 *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)    }}
查看完整描述

3 回答

?
jeck貓

TA貢獻1909條經(jīng)驗 獲得超7個贊

我不確定多處理程序的事情,但我知道為什么你寫的代碼失敗了。關(guān)鍵是這一行:

*wr.Header().Set("Content-Type", "application/json")

由于運算符優(yōu)先級,被解釋為:

*(wr.Header().Set("Content-Type", "application/json"))

由于wr有型*http.ResponseWriter,這是一個指針,以和接口,而不是接口本身,這是不行的。我假設您知道這一點,這就是您這樣做的原因*wr。我假設您要向編譯器暗示的是:

(*wr).Header().Set("Content-Type", "application/json")

如果我沒記錯的話,那應該可以編譯并正常運行。


查看完整回答
反對 回復 2021-06-21
?
楊__羊羊

TA貢獻1943條經(jīng)驗 獲得超7個贊

您不需要使用,*wr因為它已經(jīng)引用了一個指針。

wr.Header().Set("Content-Type", "application/json") 應該足夠了。

如果你想為每個請求設置“全局”標頭,你可以創(chuàng)建一個滿足的函數(shù)http.HandleFuncgo.auth 有一個很好的例子),然后像這樣包裝你的處理程序:

http.HandleFunc("/hello", Defaults(helloHandler))

另請查看net/http文檔,其中包含更多示例


查看完整回答
反對 回復 2021-06-21
  • 3 回答
  • 0 關(guān)注
  • 247 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號