ListenAndServe
занимает всего один http.Handler
.
Самый простой способ сделать это без привлечения библиотеки - это построить 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)
}
})
}
Это имеет некоторые проблемы, хотя, если какой-либо из обработчиков хочет что-то сделать для Request.Body
или записать в ResponseWriter
.
Например, вы можете захотеть, чтобы обработчик проверил, есть ли у запроса разрешение, а затем запретил бы запуск других обработчиков.Это означает, что код состояния ResponseWriter
необходимо проверить.Я бы сказал, принести в библиотеку на этом этапе.