Avec le développement continu de la technologie Internet, de plus en plus de systèmes doivent désormais accéder à plusieurs interfaces de services externes pour mettre en œuvre diverses fonctions. Afin d'unifier la gestion et de simplifier les appels aux interfaces externes, une couche d'accès doit être introduite pour protéger l'architecture sous-jacente des modifications apportées aux API externes. Cet article explique comment utiliser Golang pour implémenter une couche d'accès afin d'accéder facilement aux interfaces de services externes.
1. Qu'est-ce que la couche d'accès ?
La couche d'accès fait référence à un niveau d'abstraction entre l'intérieur et l'extérieur du système. Elle est principalement responsable des appels d'interface internes et externes. La couche d'accès peut gérer et contrôler uniformément les appels d'API de plusieurs systèmes externes, masquer les détails de l'interface sous-jacente et fournir des méthodes d'appel d'interface simplifiées aux utilisateurs externes.
2. Avantages de golang
Golang est un langage de programmation efficace avec les avantages suivants :
3. Implémentation de la couche d'accès
Structure de la couche d'accèsVoici un exemple de gestionnaire qui gère les requêtes HTTP GET :
package handlers import ( "fmt" "net/http" ) func GetHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "This is a GET request, URL: %s", r.URL.Path[1:]) }
package manager import ( "fmt" "net/http" ) var ( handlers = make(map[string]func(http.ResponseWriter, *http.Request)) ) func AddHandler(name string, handler func(http.ResponseWriter, *http.Request)) { handlers[name] = handler } func GetHandlerByName(name string) (func(http.ResponseWriter, *http.Request), bool) { val, ok := handlers[name] return val, ok } func Router(w http.ResponseWriter, r *http.Request) { handler, ok := GetHandlerByName(r.URL.Path[1:]) if ok { handler(w, r) } else { fmt.Fprintf(w, "Unknown request URL: %s", r.URL.Path[1:]) } }
Le package du gestionnaire d'interface implémente la méthode AddHandler(), qui est utilisée pour ajouter les interfaces disponibles. Dans le même temps, il implémente également la méthode GetHandlerByName(), qui est utilisée pour rechercher le gestionnaire portant le nom spécifié. Lorsque la méthode Router() est appelée, elle utilisera GetHandlerByName() pour trouver le bon gestionnaire et acheminer la requête vers ce gestionnaire.
Centre de mise en œuvrepackage center import ( "log" "net/http" "manager" ) func StartServer(port string) { http.HandleFunc("/", manager.Router) log.Fatal(http.ListenAndServe(":"+port, nil)) }
La méthode centrale StartServer() utilise la méthode http.HandleFunc() pour définir les règles de routage, en utilisant "/" comme préfixe de routage et la méthode Router() comme gestionnaire. Appelez la méthode log.Fatal() pour arrêter immédiatement l'exécution du programme et obtenir une erreur. Si la surveillance du réseau échoue, le programme ne démarrera pas.
4. Utilisation de la couche d'accès
Après avoir terminé l'écriture de la couche d'accès, nous pouvons l'utiliser dans l'application en suivant les étapes suivantes :
Ajouter l'interface à exposer au gestionnaire d'interface via la méthode AddHandler() . Par exemple, pour ajouter une interface nommée "/hello" :manager.AddHandler("hello", handlers.HelloHandler)
center.StartServer("8080")
curl -X GET http://localhost:8080/hello
5. Résumé
Dans cet article, nous avons présenté les concepts de base de la couche d'accès et la méthode d'utilisation de golang pour implémenter la couche d'accès. L'utilisation de Golang peut facilement mettre en œuvre une couche d'accès efficace et facile à maintenir afin que nous puissions mieux gérer et traiter les services externes. De plus, nous avons expliqué comment utiliser la couche d'accès côté client afin de pouvoir facilement tester l'interface et comprendre ses fonctionnalités.
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!