我想在包ListenAndServe的方法中使用多個處理程序http。例如:if err := http.ListenAndServe(":"+s.config.Port, handlers.LoggingHandler(os.Stdout, s.router), handlers.CORS()(r.router)); err != nil {問題:每次我收到以下錯誤:pkg/server/server.go:30:31: 調(diào)用 http.ListenAndServe 的參數(shù)太多 (string, http.Handler, http.Handler) want (string, http.Handler) pkg/server/server.go:30 :113: 未定義: r問題:現(xiàn)在它不接受超過 2 個參數(shù),那么還有其他選擇嗎?
1 回答

牛魔王的故事
TA貢獻1830條經(jīng)驗 獲得超3個贊
ListenAndServe只需要一個http.Handler.
在不引入庫的情況下執(zhí)行此操作的最簡單方法是構(gòu)建一個http.Handler包含以下兩者的庫:
func simpleChain(hs ...http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request){
for _, h := range hs {
h.ServeHTTP(w, r)
}
})
}
但是,如果任何處理程序想要對 . 執(zhí)行某些操作Request.Body或?qū)懭隦esponseWriter.
例如,您可能希望處理程序檢查請求是否具有權(quán)限,然后防止調(diào)用其他處理程序。這意味著ResponseWriter需要檢查 的狀態(tài)代碼。我會說在這一點上帶一個圖書館。
- 1 回答
- 0 關(guān)注
- 173 瀏覽
添加回答
舉報
0/150
提交
取消