Maison > développement back-end > Golang > Comment puis-je partager des données entre le middleware et les gestionnaires dans Go ?

Comment puis-je partager des données entre le middleware et les gestionnaires dans Go ?

Barbara Streisand
Libérer: 2024-11-17 09:03:03
original
960 Les gens l'ont consulté

How Can I Share Data Between Middleware and Handlers in Go?

Comment partager des données entre middleware et gestionnaires

Vos gestionnaires renvoient des gestionnaires HTTP, et votre middleware accepte les gestionnaires HTTP et les appelle après avoir effectué son opérations. Pour transmettre les données du middleware aux gestionnaires, vous pouvez exploiter le package de contexte.

import (
    "context"
    "github.com/gorilla/mux"
)

func Middleware(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        // Middleware operations
        // Parse body/get token.
        token := parseToken(r)
        ctx := context.WithValue(r.Context(), "token", token)

        next.ServeHTTP(w, r.WithContext(ctx))
    })
}

func Handler() http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        token := r.Context().Value("token")
        // Continue with handler logic
    })
}
Copier après la connexion

Cette approche évite d'analyser le JWT à la fois dans le middleware et dans le gestionnaire, garantissant ainsi une utilisation efficace des ressources. Notez que vous pouvez transmettre n'importe quel type de données en modifiant le type de l'argument Value dans r.Context().Value().

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