Heim >Backend-Entwicklung >Golang >Wie übergebe ich zusätzliche Argumente an Handlerfunktionen in Gorilla Mux?
In Gorilla Mux erhalten Handler standardmäßig nur http.ResponseWriter und *http.Request. Es gibt jedoch Szenarien, in denen die Übergabe zusätzlicher Argumente an Handler erforderlich ist, beispielsweise an ein Datenbankverbindungsobjekt.
Eine Möglichkeit, dies zu erreichen, ist um einen benutzerdefinierten Typ zu definieren, der die zusätzlichen Daten enthält und die http.HandlerFunc-Schnittstelle implementiert.
type UserHandler struct { db *gorm.DB } func (h UserHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { // here you can use db } // usage: db := createDB() users := UserHandler{db: db} router.HandleFunc("/users/{id}", users.ServeHTTP)
Eine weitere Option besteht darin, eine Abschlussfunktion zu verwenden, um den eigentlichen Handler zu umschließen und das zusätzliche Argument einzufügen.
func showUserHandler(db *gorm.DB) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { // here you can use db } } // usage: db := createDB() router.HandleFunc("/users/{id}", showUserHandler(db))
In bestimmten Szenarien Die Verwendung globaler Variablen kann akzeptabel sein, insbesondere für gemeinsam genutzte Ressourcen wie Datenbankverbindungen. Es ist jedoch wichtig, sie sparsam zu verwenden und die möglichen Nachteile zu verstehen.
var db *gorm.DB = createDB() func showUserHandler(w http.ResponseWriter, r *http.Request) { // here you can use db } // usage: router.HandleFunc("/users/{id}", showUserHandler)
Das obige ist der detaillierte Inhalt vonWie übergebe ich zusätzliche Argumente an Handlerfunktionen in Gorilla Mux?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!