Comment créer un serveur Web de base dans Go

Go est un langage de programmation passionnant pour la création d'applications Web modernes ainsi que de logiciels systèmes. Il a balayé l'industrie de la technologie lors de sa sortie et alimente des services tels que 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 vous apprendra comment rédiger un serveur Web de base dans Go.

Importation des packages nécessaires

Le package net / HTTP offre tout le nécessaire pour créer des serveurs Web et des clients. Ce package expose plusieurs fonctions utiles pour gérer la programmation Web.

Vous pouvez l'importer en ajoutant la ligne ci-dessous en haut de votre code source:

 import "net/http"

Nous allons également utiliser le package fmt pour le formatage des chaînes et le package log pour la gestion des erreurs. Vous pouvez soit les importer individuellement comme indiqué ci-dessus, soit factoriser tous les packages à l'aide d'une seule instruction d'importation:

 import (
"fmt"
"log"
"net/http"
)

Vous pouvez continuer à écrire la fonction principale après avoir importé les packages requis. Allez-y et enregistrez le fichier source avec une extension .go . Si vous utilisez Vim, utilisez la commande ci-dessous pour enregistrer et quitter Vim :

 :wq server.go

Ecrire la fonction principale

Les programmes Go vivent dans la fonction principale, bien nommée «main». Vous devrez implémenter l'appel du serveur ici. Ajoutez les lignes suivantes dans votre code source et voyez ce qu'elles font:

 func main() {
http.HandleFunc("/", index)
log.Fatal(http.ListenAndServe(":8080", nil))
}

Nous définissons la fonction principale à l'aide du mot-clé func . Go a des règles strictes concernant le placement 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 arrivant au chemin racine ( "/" ) seront traitées par index , une fonction du 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 de la machine hôte. Le deuxième paramètre de cette fonction est nécessaire pour bloquer le programme jusqu'à la fin.

Puisque http.ListenAndServe renvoie toujours une erreur, nous encapsulons cet appel dans un appel log.Fatal . Cette instruction enregistre tous les messages d'erreur générés côté serveur.

Implémentation de la fonction de gestionnaire

Comme vous pouvez le voir, la fonction main appelle l'index de la fonction de gestionnaire pour traiter les demandes des clients. Cependant, nous n'avons pas encore défini cette fonction pour notre 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, qui se présente 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. Nous l'utilisons pour afficher la réponse du serveur à nos requêtes Web. Enfin, le composant r.URL.Path [1:] est utilisé pour récupérer les données qui viennent après le chemin racine.

Ajout de toutes les pièces ensemble

Votre serveur Web Go devrait être prêt une fois que vous avez ajouté toutes les pièces ensemble. Le code doit ressembler à ce qui suit:

 package main
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 ce code de serveur Web Go en tant que fichier exécutable.

Créez des serveurs Web avec Go

Les packages de bibliothèque robustes de Go facilitent la programmation Web pour les débutants. Vous pouvez rapidement développer des serveurs Web simples avec seulement quelques lignes de code.

De plus, les puissantes fonctionnalités de test de ce langage de programmation facilitent également la mise en œuvre de méthodologies de programmation Agile. Il s'agit d'un ensemble de stratégies de développement logiciel basées sur un développement itératif et une collaboration étendue entre les équipes.