Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich Argumente an Gorilla Mux-Handler übergeben?

Wie kann ich Argumente an Gorilla Mux-Handler übergeben?

Susan Sarandon
Susan SarandonOriginal
2024-11-23 20:00:18748Durchsuche

How can I pass arguments to Gorilla Mux handlers?

Ü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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn