Übergabe von Argumenten an Gorilla Mux-Handler
In Gorilla Mux werden Handler normalerweise mithilfe der HandleFunc-Methode registriert, die eine Funktion annimmt, die a akzeptiert http.ResponseWriter und ein *http.Request as Argumente.
Einschränkungen der Standardmethode
Wenn Sie jedoch zusätzliche Argumente in Ihren Handlern benötigen, z. B. ein Datenbankobjekt, unterliegt die Standardmethode HandleFunc Einschränkungen. Es akzeptiert nur zwei Argumente, was die Übergabe zusätzlicher Parameter erschwert.
Mögliche Lösungen
Es gibt einige Problemumgehungen, um diese Einschränkung zu überwinden:
Strukturbasierte Handler:
Erstellen Sie eine benutzerdefinierte Handlerstruktur und definieren Sie Methoden, die die erforderlichen Argumente übernehmen. Die Struktur kann dann in die Handler-Funktion eingebettet werden.
type Users struct { db *gorm.DB } func (users *Users) ShowUserHandler(w http.ResponseWriter, r *http.Request) { // Access to the database object through users.db } // Register the handler router.HandleFunc("/users/{id}", users.ShowUserHandler).Methods("GET")
Wrapper-Funktion:
Wrappen Sie den eigentlichen Handler in eine Wrapper-Funktion, die das Zusätzliche bereitstellt Argumente.
db := createDB() router.HandleFunc("/users/{id}", func(w http.ResponseWriter, r *http.Request) { ShowUserHandler(w, r, db) }).Method("GET")
Die Wahl des Ansatzes hängt von den Anforderungen Ihrer Anwendung ab und Präferenz. Wenn Sie keine globalen Datenbankobjekte haben möchten oder mehr als eine Instanz der Datenbank benötigen, bieten die strukturbasierten oder Wrapper-Funktionsmethoden mehr Flexibilität.
Das obige ist der detaillierte Inhalt vonWie übergebe ich zusätzliche Argumente an Gorilla-Mux-Handler?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!