Maison > développement back-end > Golang > Comment transmettre les paramètres du middleware au contrôleur

Comment transmettre les paramètres du middleware au contrôleur

王林
Libérer: 2024-02-13 17:15:10
avant
535 Les gens l'ont consulté

Comment transmettre les paramètres du middleware au contrôleur

l'éditeur php Baicao vous présente comment transmettre les paramètres du middleware au contrôleur. Au cours du processus de développement, nous devons souvent obtenir certains paramètres dans le middleware, puis transmettre ces paramètres au contrôleur pour un traitement ultérieur. Pour obtenir cette fonctionnalité, nous pouvons transmettre des paramètres au contrôleur en utilisant la méthode with de l'objet $request dans le middleware. Tout d'abord, nous devons obtenir les paramètres dans le middleware, puis utiliser la méthode with de l'objet $request pour ajouter les paramètres à l'objet request, et enfin obtenir ces paramètres dans le contrôleur via la méthode d'entrée de l'objet $request. De cette façon, nous avons réussi à transmettre les paramètres du middleware au contrôleur. Cette méthode est simple et facile à mettre en œuvre et répond à nos besoins. J'espère que cette méthode vous aidera !

Contenu de la question

Je construis une API Web en utilisant le framework Echo Labstack. J'ai un middleware sur mon itinéraire pour vérifier l'authentification des utilisateurs, mais j'ai ensuite du mal à transmettre les données au contrôleur et je ne trouve aucune information pertinente dans Google et SO.

route.go

func Routes(e *echo.Echo) {
    e.(middlewareAuthorise)
    user := e.Group("/user")
    user.GET("/profile", controllers.UserProfile)
}

func middlewareAuthorise(next echo.HandlerFunc) echo.HandlerFunc {
    return func(c echo.Context) error {
        // Do some authentication here with access token and get user ID
        auth := controllers.Auth(c, 1)
        if auth["status"] != 200 {
            return c.JSON(401, map[string]any{"status": 401})
        }

        user_id := auth["user_id"]
        // I want to pass user_id to my controllers
        return next(c, user_id)
    }
}
Copier après la connexion

controllers.go

func UserProfile(c echo.Context) error {
    // I want to get the user_id here from middleware
    return c.JSON(200, map[string]any{
        "user_id": user_id,
    })
}
Copier après la connexion

J'ai cherché et essayé plusieurs combinaisons toute la journée, mais je n'ai rien trouvé qui fonctionne. Comment puis-je transmettre les paramètres du middleware à mon contrôleur de la manière la plus efficace possible ?

Solution de contournement

Vous pouvez utiliser la méthode SetGet du contexte.

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal