Le middleware Golang est un modèle de conception couramment utilisé qui peut fournir des fonctions supplémentaires lors du traitement des requêtes HTTP, telles que la journalisation, la vérification des autorisations, la gestion des erreurs, etc. Cet article analysera en profondeur les fonctions et les utilisations du middleware Golang et l'expliquera avec des exemples de code spécifiques.
Le middleware est un composant qui connecte les requêtes et les réponses. Il peut exécuter une logique spécifique avant ou après que la requête atteigne la fonction de traitement. Dans Golang, le middleware est généralement une fonction qui reçoit un paramètre http.HandlerFunc
et renvoie un nouveau http.HandlerFunc
. De cette manière, plusieurs middlewares peuvent être connectés en série pour former une chaîne de traitement dans laquelle les requêtes sont traitées. http.HandlerFunc
参数,并返回一个新的http.HandlerFunc
。通过这种方式,可以串联多个中间件,形成一个处理链,在其中对请求进行处理。
func LoggerMiddleware(next http.HandlerFunc) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { log.Printf("[%s] %s ", r.Method, r.RequestURI) next(w, r) } }
func AuthMiddleware(next http.HandlerFunc) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { if !CheckPermission(r) { http.Error(w, "Unauthorized", http.StatusUnauthorized) return } next(w, r) } }
func main() { mux := http.NewServeMux() mux.HandleFunc("/", AuthMiddleware(LoggerMiddleware(HandleRequest))) http.ListenAndServe(":8080", mux) } func HandleRequest(w http.ResponseWriter, r *http.Request) { w.Write([]byte("Hello, World!")) } func CheckPermission(r *http.Request) bool { // 在这里进行权限验证的逻辑 return true }
在上面的代码中,我们定义了日志记录中间件和权限验证中间件,并通过AuthMiddleware(LoggerMiddleware(HandleRequest))
AuthMiddleware(LoggerMiddleware(HandleRequest))
pour former une chaîne de traitement, chaque requête passera par le processus de la journalisation et la vérification des autorisations tour à tour. 🎜🎜À travers les exemples ci-dessus, nous avons analysé en profondeur les fonctions et les utilisations du middleware Golang, dans l'espoir d'aider les lecteurs à mieux comprendre l'application du middleware dans Golang. Dans le développement réel, une utilisation raisonnable du middleware peut améliorer la maintenabilité et l’évolutivité du code et constitue un modèle de conception très recommandé. 🎜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!