Übergabe von Argumenten an Gorilla Mux-Handler
Im Kontext von Gorilla Mux ist es nicht direkt möglich, Argumente mithilfe der HandleFunc-Methode an Handler zu übergeben . Es gibt jedoch mehrere Ansätze, um ein ähnliches Ergebnis zu erzielen.
Eine in der Antwort erwähnte Option besteht darin, eine Wrapper-Funktion zu erstellen. Dazu gehört das Erstellen einer Funktion, die die zusätzlichen Argumente entgegennimmt, die Sie an den Handler übergeben möchten, und dann den eigentlichen Handler mit diesen Argumenten aufruft. Beispiel:
db := createDB() router.HandleFunc("/users/{id}", func(w http.ResponseWriter, r *http.Request) { showUserHandler(w, r, db) }).Method("GET")
Dieser Ansatz ermöglicht es Ihnen, das Datenbankobjekt als drittes Argument an die showUserHandler-Funktion zu übergeben.
Eine andere Option besteht darin, eine Struktur zu verwenden, um sowohl den Handler als auch den zu kapseln zusätzliche Argumente. Dadurch können Sie mehrere Handler definieren, die mit denselben Daten arbeiten, ohne den Code zum Initialisieren der Daten wiederholen zu müssen. Zum Beispiel:
type Users struct { db *gorm.DB } func (users *Users) showHandler(w http.ResponseWriter, r *http.Request) { // Access the database object through users.db } // Setup users := &Users{db: createDB()} router.HandleFunc("/users/{id}", users.showHandler).Method("GET")
Indem Sie einen Handler für eine Struktur definieren, können Sie dem Handler einen zusätzlichen Status hinzufügen, ohne die zugrunde liegende Handlerfunktion zu ändern.
Während es in einigen Fällen akzeptabel ist, globale Variablen zu verwenden In bestimmten Fällen bieten diese Problemumgehungen alternative Lösungen, wenn Sie sie lieber vermeiden möchten.
Das obige ist der detaillierte Inhalt vonWie kann ich Argumente an Gorilla Mux-Handler übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!