Maison > développement back-end > Golang > Comment transmettre des arguments aux gestionnaires de routeurs Gin à Golang ?

Comment transmettre des arguments aux gestionnaires de routeurs Gin à Golang ?

Patricia Arquette
Libérer: 2024-12-10 20:15:10
original
848 Les gens l'ont consulté

How to Pass Arguments to Gin Router Handlers in Golang?

Passer des arguments aux gestionnaires de routeurs dans Golang avec Gin

Lors du développement d'API RESTful dans Golang à l'aide du framework Web Gin, vous pouvez rencontrer le besoin pour transmettre des arguments à vos gestionnaires de route. Ceci est utile pour réutiliser des ressources, telles que des connexions à une base de données, entre des routes.

Il existe deux approches courantes pour transmettre des arguments aux gestionnaires de routes :

  1. Variables globales : Une option simple consiste à stocker l'argument en tant que variable globale. Cependant, cette approche peut entraîner des incohérences dans le code et n'est pas idéale pour les projets plus importants.
  2. Fermetures : Une solution plus propre consiste à utiliser des fermetures. Une fermeture vous permet de transmettre une variable supplémentaire à un gestionnaire de route tout en satisfaisant l'interface gin.HandlerFunc de Gin.

Voici un exemple utilisant une fermeture :

// SomeHandler returns a `func(*gin.Context)` to satisfy Gin's router methods
// db is an example argument that you want to pass down to the handler
func SomeHandler(db *sql.DB) gin.HandlerFunc {
    fn := func(c *gin.Context) {
        // Your handler code goes in here
        // You now have access to the db variable

        // Example request handling
        rows, err := db.Query(...)

        c.String(200, results)
    }

    return gin.HandlerFunc(fn)
}

func main() {
    db, err := sql.Open(...)
    // Handle error

    router := gin.Default()
    router.GET("/test", SomeHandler(db))
    router.Run(":8080")
}
Copier après la connexion

Dans ce scénario, la fonction SomeHandler crée une fermeture qui encapsule le gestionnaire de route réel. La fermeture capture la variable db, permettant au gestionnaire d'y accéder.

N'oubliez pas que cette technique peut être appliquée à tout type d'argument que vous devez transmettre à vos gestionnaires de route.

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