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

王林
王林avant
2024-02-13 17:15:10509parcourir

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)
    }
}

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,
    })
}

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer