Go est un langage de programmation intéressant pour créer des applications Web modernes ainsi que des logiciels système. Il a créé un énorme buzz après sa sortie et alimente des services comme Docker, Kubernetes, Terraform, Dropbox et Netflix .
De plus, la solide collection de packages intégrés de Go en fait un excellent choix pour la programmation Web. Cet article va vous montrer comment écrire un serveur Web de base dans Go.
Importez les packages nécessaires
Le package net/HTTP fournit tout le nécessaire pour créer un serveur Web et un client. Ce package présente quelques fonctions utiles pour gérer la programmation Web.
Vous pouvez l'importer en ajoutant la ligne ci-dessous au début de votre code source :
import "net/http"
L'article utilisera également le package fmt pour formater les chaînes et le package log pour gérer les erreurs. Vous pouvez les importer individuellement comme indiqué ci-dessus, ou importer tous les packages à l'aide d'une seule instruction d'importation :
import (
"fmt"
"log"
"net/http"
)
Vous pouvez procéder à l'écriture de la fonction principale après avoir importé les packages nécessaires. Allez-y et enregistrez le fichier source avec l' extension .go . Si vous utilisez Vim , utilisez la commande ci-dessous pour enregistrer et quitter Vim :
:wq server.go
Écrivez la fonction principale
Les programmes Go résident directement dans la fonction principale, bien nommée « main ». Vous devrez passer un appel au serveur ici. Ajoutez les lignes suivantes au code source et voyez ce qu'elles font :
func main() {
http.HandleFunc("/", index)
log.Fatal(http.ListenAndServe(":8080", nil))
}
L'exemple définit la fonction principale à l'aide du mot-clé func . Go a des règles strictes concernant la position de l’accolade d’ouverture, alors assurez-vous que l’accolade de départ est sur la bonne ligne. La première instruction de main définit que toutes les requêtes Web adressées au chemin racine ( "/" ) seront gérées par index, une fonction de type http.HandlerFunc .
La deuxième ligne démarre le serveur web via la fonction http.ListenAndServe . Il signale au serveur d'écouter en permanence les requêtes HTTP entrantes sur le port 8080 du serveur. Le deuxième paramètre de cette fonction est nécessaire pour bloquer le programme jusqu'à la fin.
Étant donné que http.ListenAndServe renvoie toujours une erreur, l'exemple encapsule cet appel dans un appel log.Fatal . Cette instruction enregistre tous les messages d'erreur générés côté serveur.
Implémenter des fonctions de traitement
Comme vous pouvez le voir, la fonction principale appelle la fonction de gestionnaire index pour gérer les demandes des clients. Cependant, l'exemple n'a pas encore défini cette fonctionnalité pour son serveur.
Ajoutons les instructions nécessaires pour rendre la fonction d'index utilisable :
func index(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, welcome to %s!", r.URL.Path[1:])
}
Cette fonction prend deux arguments différents de type http.ResponseWriter et http.Request . Le paramètre http.ResponseWriter contient la réponse du serveur à la requête entrante, sous la forme d'un objet http.Request .
La fonction Fprintf du package fmt est utilisée pour afficher et manipuler des chaînes de texte. L'article l'utilise pour afficher la réponse du serveur aux requêtes Web. Enfin, l'élément r.URL.Path[1:] est utilisé pour récupérer les données après le chemin racine.
Ajoutez toutes les parties restantes
Votre serveur Web Go sera prêt une fois que vous aurez ajouté tous les composants restants. Le code ressemblera à ceci :
import (
"fmt"
"log"
"net/http"
)
func index(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, welcome to %s!", r.URL.Path[1:])
}
func main() {
http.HandleFunc("/", index)
log.Fatal(http.ListenAndServe(":8080", nil))
}
La première ligne est nécessaire pour compiler le code de ce serveur Web Go sous forme de fichier exécutable.
Compilez ce code du serveur Web Go en tant que fichier exécutable