Gorilla Mux benutzerdefinierte Middleware

Ich verwende Gorilla Mux zum Verwalten des Routings. Was mir fehlt, ist die Integration einer Middleware zwischen jede Anfrage.

Beispielsweis

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)
    }
}

Jede eingehende Anfrage sollte die Middleware passieren. Wie kann ich hier eine Midleware einbinden?

Aktualisiere

Ich werde es in Kombination mit Gorilla / Sessions benutzen und sie sagen:

Wichtiger Hinweis: Wenn Sie Gorilla / Mux nicht verwenden, müssen Sie Ihre Handler mit context.ClearHandler umschließen, da sonst Speicherplatz verloren geht! Eine einfache Möglichkeit, dies zu tun, besteht darin, den Mux der obersten Ebene umzubrechen, wenn Sie http.ListenAndServe aufrufen:

Wie kann ich dieses Szenario verhindern?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage