Passer des arguments aux gestionnaires Gorilla Mux
Dans Gorilla Mux, les gestionnaires sont généralement enregistrés à l'aide de la méthode HandleFunc, qui prend une fonction qui accepte un http.ResponseWriter et un *http.Request comme arguments.
Limitations de la méthode standard
Cependant, lorsque vous avez besoin d'arguments supplémentaires dans vos gestionnaires, tels qu'un objet de base de données , la méthode HandleFunc par défaut présente des limites. Il n'accepte que deux arguments, ce qui rend difficile la transmission de paramètres supplémentaires.
Solutions possibles
Il existe quelques solutions de contournement pour surmonter cette limitation :
Gestionnaires basés sur la structure :
Créez une structure de gestionnaire personnalisée et définissez des méthodes qui prennent les arguments nécessaires. La structure peut ensuite être intégrée dans la fonction de gestionnaire.
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")
Fonction Wrapper :
Enveloppez le gestionnaire réel dans une fonction wrapper qui fournit le supplément arguments.
db := createDB() router.HandleFunc("/users/{id}", func(w http.ResponseWriter, r *http.Request) { ShowUserHandler(w, r, db) }).Method("GET")
Le choix de l'approche dépend des exigences et des préférences de votre application. Si vous préférez ne pas avoir d'objets de base de données globaux ou si vous avez besoin de plus d'une instance de la base de données, les méthodes de fonction basées sur la structure ou sur le wrapper offrent plus de flexibilité.
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!