Gorilla mux пользовательское промежуточное ПО

Я использую Gorilla MUX для управления маршрутизацией. Что мне не хватает, так это интегрировать промежуточное ПО между каждым запросом

Например

package main

import (
    "fmt"
    "github.com/gorilla/mux"
    "log"
    "net/http"
    "strconv"
)

func HomeHandler(response http.ResponseWriter, request *http.Request) {

    fmt.Fprintf(response, "Hello home")
}

func main() {

    port := 3000
    portstring := strconv.Itoa(port)

    r := mux.NewRouter()
    r.HandleFunc("/", HomeHandler)
    http.Handle("/", r)

    log.Print("Listening on port " + portstring + " ... ")
    err := http.ListenAndServe(":"+portstring, nil)
    if err != nil {
        log.Fatal("ListenAndServe error: ", err)
    }
}

Каждый входящий запрос должен проходить через промежуточное ПО. Как я могу интегрировать здесь промежуточное ПО?

Обновить

Я буду использовать его в сочетании с гориллой / сессиями, и они скажут:

Важное примечание: если вы не используете gorilla / mux, вам нужно обернуть свои обработчики в context.ClearHandler, иначе вы потеряете память! Простой способ сделать это - обернуть мультиплексор верхнего уровня при вызове http.ListenAndServe:

Как я могу предотвратить этот сценарий?

Ответы на вопрос(4)

Ваш ответ на вопрос