Ce qui suit est fourni par le GolangTutoriel colonne Laissez-moi vous présenter comment implémenter une passerelle API simple dans Golang. J'espère que cela sera utile aux amis dans le besoin !
Dans un projet récent, une architecture de microservices-go-kit
a été utilisée pour le développement back-end. Dans le style d'architecture des microservices, une grande application est divisée en plusieurs petits systèmes de services. Ces petits systèmes peuvent former leurs propres systèmes, ce qui signifie que ces petits systèmes peuvent avoir leurs propres bases de données, frameworks et même langages. API Gateway (API Gataway). En fait, il existe de nombreux frameworks d'implémentation prêts à l'emploi sur Internet, mais les exigences de ce projet sont relativement simples, nous utiliserons donc Golang
pour l'implémenter nous-mêmes. .
La passerelle API est un serveur et la seule entrée du système. Du point de vue de la conception orientée objet, il est similaire au motif de façade. La passerelle API encapsule l'architecture interne du système et fournit une API personnalisée pour chaque client. Il peut également avoir d'autres responsabilités telles que l'authentification, la surveillance, l'équilibrage de charge, la mise en cache, le partage et la gestion des demandes et la gestion des réponses statiques.
Il existe de nombreuses technologies utilisées pour mettre en œuvre des passerelles API, qui sont grossièrement divisées dans les catégories suivantes :
Nginx
, Haproxy
,… Netty
, Servlet
,…Spring Cloud Gateway
, Zuul
, Zuul2
,…La fonction la plus basique de la passerelle API est le proxy inverse. Il existe de nombreuses façons de l'implémenter. Cet article implémentera un proxy inverse simple basé sur le type net/http/httputil
dans le package de la bibliothèque standard ReverseProxy
. La mise en œuvre du proxy inverse implique principalement func NewSingleHostReverseProxy(target *url.URL) *ReverseProxy
et type ReverseProxy
.
1 |
|
NewSingleHostReverseProxy
renvoie un nouveau ReverseProxy
qui achemine les requêtes URLs
vers les targe
, scheme
, host
spécifiés de base path
. Le type
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
ReverseProxy
a deux attributs importants, à savoir Director
et ModifyResponse
. Les deux attributs sont des types de fonction. Lors de la réception d'une demande client, la fonction ServeHTTP
appelle d'abord la fonction Director
. pour modifier le corps de la requête reçue, par exemple en modifiant l'adresse cible de la requête, les en-têtes de la requête, etc. ; puis utilisez le corps de la requête modifié pour lancer une nouvelle requête. Après avoir reçu la réponse, appelez la fonction ModifyResponse
pour modifier la réponse. Enfin, le corps de la réponse modifié est copié et répondu au client, réalisant ainsi l'ensemble du processus de proxy inverse.
Dans NewSingleHostReverseProxy
, le code source a analysé le URLs
entrant et terminé la modification de Director
Il suffit d'appeler la fonction NewSingleHostReverseProxy
et de transmettre l'URL du serveur cible. Un simple proxy inverse est terminé.
L'exemple de code implique uniquement les modules
user
etauth
du microservice Vous pouvez modifier certaines parties en fonction des besoins réels
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
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!