Heim > Backend-Entwicklung > Golang > Wie übergebe ich zusätzliche Argumente an Gorilla-Mux-Handler?

Wie übergebe ich zusätzliche Argumente an Gorilla-Mux-Handler?

Mary-Kate Olsen
Freigeben: 2024-11-13 09:15:02
Original
809 Leute haben es durchsucht

How to Pass Additional Arguments to Gorilla Mux Handlers?

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

  1. Globale Variablen:
    Obwohl in Go generell davon abgeraten wird, ist dies akzeptabel Verwenden Sie globale Variablen für Datenbankobjekte. Dies ermöglicht einen einfachen Zugriff auf die Datenbank von jedem Handler aus.
  2. 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")
    Nach dem Login kopieren
  3. 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")
    Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage