Ich versuche, mein Datenbankobjekt an meine Handler zu übergeben, anstatt ein globales Objekt zu haben. Aber ich weiß nicht, ob das möglich ist, ich benutze Gorilla Mux Paket, und ich kann sehen, dass es eine Schließung als zweiten Parameter braucht.Wie übergebe ich Argumente an meinen Handler
Was definiert dann die Parameter, die ich verwenden kann, idealerweise möchte ich einen dritten Parameter wie diesen haben.
// In my main
router.HandleFunc("https://stackoverflow.com/users/{id}", showUserHandler).Methods("GET")
func showUserHandler(w http.ResponseWriter, r *http.Request, db *gorm.DB) {
fmt.Fprintf(w, "We should fetch the user with id %s", vars["id"])
}
Gibt es einen Workaround? Oder brauche ich ein globales DB-Objekt? Ich bin neu in Go, also erkläre bitte eine mögliche Antwort im Detail.
http://stackoverflow.com/a/26106655/6309 können Sie auch ein paar Ideen. – VonC
@VonC Ich habe tatsächlich versucht http://simonsdotnet.wordpress.com/2014/09/06/extiging-gos-http-handlers/ aber festgestellt, dass es nicht mit Gorilla funktioniert, da das http-Paket nur die ServeHTTP will, aber der Gorilla will eine Funktion mit bestimmten Parametern. Ich könnte falsch liegen. – MartinElvar