Maison > développement back-end > Golang > le corps du texte

Comment puis-je transmettre des arguments aux gestionnaires Gorilla Mux ?

Susan Sarandon
Libérer: 2024-11-23 20:00:18
original
748 Les gens l'ont consulté

How can I pass arguments to Gorilla Mux handlers?

Passer des arguments aux gestionnaires Gorilla Mux

Dans le contexte de Gorilla Mux, il n'est pas directement possible de transmettre des arguments aux gestionnaires à l'aide de la méthode HandleFunc . Cependant, il existe plusieurs approches pour obtenir un résultat similaire.

Une option, mentionnée dans la réponse fournie, consiste à créer une fonction wrapper. Cela implique de créer une fonction qui prend les arguments supplémentaires que vous souhaitez transmettre au gestionnaire, puis appelle le gestionnaire réel avec ces arguments. Par exemple :

db := createDB()
router.HandleFunc("/users/{id}", func(w http.ResponseWriter, r *http.Request) {
    showUserHandler(w, r, db)
}).Method("GET")
Copier après la connexion

Cette approche vous permet de transmettre l'objet de base de données à la fonction showUserHandler comme troisième argument.

Une autre option consiste à utiliser une structure pour encapsuler à la fois le gestionnaire et le arguments supplémentaires. Cela vous permet de définir plusieurs gestionnaires qui opèrent sur les mêmes données sans avoir à répéter le code d'initialisation des données. Par exemple :

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")
Copier après la connexion

En définissant un gestionnaire sur une structure, vous pouvez attacher un état supplémentaire au gestionnaire sans modifier la fonction du gestionnaire sous-jacent.

Bien qu'il soit acceptable d'utiliser des variables globales dans certains Dans certains cas, ces solutions de contournement proposent des solutions alternatives si vous préférez les éviter.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal