Maison > Article > développement back-end > Comment implémenter une passerelle simple et performante avec Golang
Ces dernières années, Golang (Go) a attiré de plus en plus d'attention dans le domaine du développement web. Son efficacité, sa simplicité et sa facilité d'utilisation en ont fait l'un des langages préférés pour la programmation réseau. Cet article explorera comment utiliser Golang pour implémenter une passerelle simple et performante.
Tout d’abord, vous devez comprendre ce qu’est une passerelle. Une passerelle est un périphérique réseau qui sert d'interface entre le réseau local et Internet et peut acheminer, convertir et proxy les données du réseau. Les passerelles sont généralement utilisées pour mettre en œuvre des fonctions telles que le contrôle d'accès, le contrôle de flux et la conversion de protocole.
Bien entendu, dans le développement web, nous rencontrerons souvent des proxys inverses. Par exemple, nous pouvons utiliser un proxy inverse pour mettre en cache les ressources statiques, l'équilibrage de charge, le cryptage HTTPS, etc. L’un des principaux moyens de mettre en œuvre un proxy inverse consiste à utiliser Nginx. Cependant, la configuration de Nginx est quelque peu complexe et sa maintenance n’est pas pratique. Par conséquent, nous devons trouver un moyen plus simple de mettre en œuvre un proxy inverse.
C'est pourquoi la passerelle Golang apparaît. La passerelle Golang peut facilement implémenter un proxy inverse, ainsi qu'effectuer le routage, le contrôle de flux et la conversion de protocole des requêtes HTTP. Ensuite, utilisons Golang pour créer une passerelle de base.
Pour utiliser Golang pour le développement Web, vous devez d'abord l'installer. Vous pouvez télécharger le programme d'installation de votre système d'exploitation sur le site officiel (https://golang.org/dl/). Une fois l'installation terminée, vous pouvez vérifier si Golang a été installé correctement à l'aide de la ligne de commande :
$ go version
Si vous avez installé Golang correctement, le résultat devrait ressembler à ceci :
go version go1.15.5 linux/amd64
Avant démarrer la construction Avant notre passerelle, nous devons installer certaines dépendances nécessaires. Vous trouverez ci-dessous les dépendances nécessaires :
$ go get -u github.com/gorilla/mux $ go get -u github.com/pkg/httputil $ go get -u github.com/sirupsen/logrus
Ces dépendances nous aideront à gérer les requêtes HTTP de manière dynamique et à enregistrer les messages de journal pour la passerelle.
Étape 3 : Créer une passerelle Golang
package main import ( "fmt" "net/http" "net/http/httputil" "os" "github.com/gorilla/mux" "github.com/sirupsen/logrus" ) var ( logger *logrus.Logger ) func main() { logger = logrus.New() router := mux.NewRouter() router.HandleFunc("/api/v1/time", handleTime) gateway := &http.Server{ Addr: fmt.Sprintf(":%s","8080"), Handler: router, } logger.Info("Starting gateway...") err := gateway.ListenAndServe() if err != nil { logger.Fatal(err) os.Exit(1) } } func handleTime(w http.ResponseWriter, r *http.Request) { targetURL := "https://jsonplaceholder.typicode.com/todos/1" reverseProxy := httputil.NewSingleHostReverseProxy(&url.URL{}) reverseProxy.Director = func(req *http.Request) { req.URL.Scheme = "https" req.URL.Host = targetURL req.URL.Path = r.URL.Path } reverseProxy.ServeHTTP(w, r) }
Cette passerelle écoutera sur le port 8080 et acheminera les requêtes de la passerelle vers le point de terminaison "/api/v1/time". Il transmettra ensuite la requête HTTP à l'aide de la méthode httputil.NewSingleHostReverseProxy() de la bibliothèque httputil et la transmettra au serveur proxy inverse.
En plus du routage et des proxys inverses, cette passerelle ajoute la possibilité d'enregistrer et de gérer les chemins, afin que vous puissiez utiliser la bibliothèque logrus pour suivre et enregistrer les informations sur la console.
Conclusion
Golang peut se démarquer pour le développement Web car il nécessite moins de ressources et le code est plus compact et concis. À mesure que Golang continue d'évoluer, nous pensons qu'il continuera à jouer un excellent rôle dans le monde du Web.
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!