Maison >développement back-end >Golang >Intercepteurs Golang : en un coup d'œil
Présentation : Go interceptor est un mécanisme qui gère la logique pré- et post-fonction mise en œuvre via un logiciel intermédiaire. Principe : L'intercepteur est passé à la fonction en tant que paramètre, et la logique avant et après l'exécution de la fonction. Combat pratique : démontre l'utilisation d'intercepteurs en créant un intercepteur qui enregistre les heures de requête, vérifie les paramètres de requête, et le relie à un gestionnaire HTTP.
Go Interceptor : en un coup d'œil
Introduction
Un intercepteur est un mécanisme qui effectue un certain traitement avant et après l'exécution d'une fonction. Dans Golang, les intercepteurs peuvent être implémentés à l'aide d'un middleware.
Principe
Les intercepteurs fonctionnent en se passant comme arguments à la fonction à intercepter. Lorsqu'une fonction est appelée, l'intercepteur exécutera sa logique avant et après l'exécution de la fonction.
Cas pratique
Nous créons un serveur HTTP simple pour montrer comment utiliser les intercepteurs :
package main import ( "log" "net/http" ) func main() { // 创建一个记录请求时间的拦截器 timeInterceptor := func(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { start := time.Now() defer func() { log.Printf("请求处理耗时:%fs", time.Since(start).Seconds()) }() next.ServeHTTP(w, r) }) } // 创建一个校验请求参数的拦截器 paramInterceptor := func(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { if r.URL.Query().Get("id") == "" { http.Error(w, "缺少参数:id", http.StatusBadRequest) return } next.ServeHTTP(w, r) }) } // 将拦截器与 HTTP 处理程序链接 handler := paramInterceptor(timeInterceptor(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.Write([]byte("Hello, World!")) }))) // 启动服务器 log.Fatal(http.ListenAndServe(":8080", handler)) }
Dans cet exemple, timeInterceptor
拦截器记录请求处理时间,而 paramInterceptor
l'intercepteur vérifie les paramètres de la requête. En chaînant les intercepteurs, nous pouvons exécuter cette logique avant et après le traitement de la requête.
Résumé
Les intercepteurs sont des outils puissants pour améliorer les fonctionnalités des programmes Golang. Ils vous permettent d'exécuter du code personnalisé avant et après l'exécution d'une fonction, permettant des opérations telles que la journalisation, l'authentification et l'autorisation.
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!