比方說,我有這樣的旁路golang HTTP處理程序
handler := middleware1.New(
middleware2.New(
middleware3.New(
middleware4.New(
NewHandler()
),
),
),
)
http.ListenAndServe(":8080", handler)
其中處理器擁有噸中間件的代碼。
現在我想創建自定義端點,這將跳過所有的中間件,因此執行什麼裏面有什麼serveHTTP()
功能:
http.HandleFunc("/testing", func(
w http.ResponseWriter,
r *http.Request,
) {
fmt.Fprintf(w, "it works!")
return
})
http.ListenAndServe(":8080", handler)
但是,這並不工作,從未達到/testing
。理想情況下,我根本不想修改handler
,這有可能嗎?
'http.HandleFunc'適用於'DefaultServeMux',而不是''handler'。你想添加'處理程序'到'ServeMux'或者你想添加'/ testing'到你的'handler'嗎? – JimB
@JimB向ServeMux添加處理程序似乎是更好的解決方案,對吧?因爲向處理程序添加'/ testing'不會跳過中間件,對嗎? –
是的,如果'handler'沒有在中間件之前做任何混合,那麼你需要單獨做--ServeMux(或任何複用器/路由器包)可以爲你做。 – JimB