Maison > Article > développement back-end > Golang Interceptor : améliorer l'efficacité des applications
Le rôle des intercepteurs dans les applications Go : améliorer la maintenabilité et l'évolutivité des applications. Réduisez le code en double. Pour les préoccupations transversales telles que l’authentification, l’autorisation, la gestion des erreurs et la surveillance des performances.
Les intercepteurs sont un mécanisme puissant pour mettre en œuvre des préoccupations transversales dans l'architecture logicielle. Dans Go, les intercepteurs nous permettent d'effectuer des opérations courantes qui doivent être effectuées lors du traitement d'une demande ou d'une réponse. En utilisant des intercepteurs, nous pouvons améliorer la maintenabilité et l'évolutivité de nos applications tout en réduisant le code en double.
Les intercepteurs sont utiles dans diverses situations, notamment :
Ce qui suit est un cas pratique d'implémentation d'un intercepteur dans Go en utilisant le framework Gin :
package main import ( "context" "fmt" "log" "net/http" "github.com/gin-gonic/gin" ) func main() { router := gin.Default() // 注册一个拦截器以进行身份验证 router.Use(func(c *gin.Context) { // 从请求头中获取 Authorization 标头 token := c.GetHeader("Authorization") // 验证令牌 if token == "" || !isValidToken(token) { c.AbortWithStatus(http.StatusUnauthorized) return } // 将已验证的用户 ID 附加到上下文中 c.Set("user_id", "valid_user_id") c.Next() }) router.GET("/protected", func(c *gin.Context) { // 获取上下文中的用户 ID userID := c.MustGet("user_id").(string) fmt.Fprintf(c.Writer, "欢迎回来,%s", userID) }) router.Run() } func isValidToken(token string) bool { // 模拟令牌验证逻辑 return token == "secret_token" }
Dans cet exemple, nous avons enregistré un intercepteur d'authentification en utilisant la méthode Use
de Gin. Cet intercepteur est chargé de valider le jeton JWT dans la requête d'entrée. Si le jeton n'est pas valide, il abandonne la demande et renvoie un code d'état 401 non autorisé. Si le jeton est valide, il ajoute l'ID utilisateur authentifié au contexte de la demande.
Dans le gestionnaire de route protégée, nous pouvons accéder à l'ID utilisateur dans le contexte et effectuer d'autres actions si nécessaire, telles que la journalisation hoặc du contrôle d'accès.
En utilisant des intercepteurs, nous pouvons améliorer la maintenabilité, l'évolutivité et les performances des applications Go. Comprendre comment utiliser efficacement les intercepteurs est crucial pour écrire des applications Go robustes et efficaces.
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!