Maison  >  Article  >  développement back-end  >  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
Barbara Streisandoriginal
2024-11-17 09:03:03901parcourir

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

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!

Déclaration:
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