Introduction
Ce laboratoire vise à tester votre capacité à écrire un serveur HTTP de base en utilisant le package net/http
en Golang.
This tutorial is from open-source community. Access the source code
💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici
Ce laboratoire vise à tester votre capacité à écrire un serveur HTTP de base en utilisant le package net/http
en Golang.
Vous êtes requis d'écrire un serveur HTTP simple capable de gérer deux itinéraires : /hello
et /headers
. La route /hello
devrait renvoyer une réponse simple "hello", tandis que la route /headers
devrait renvoyer tous les en-têtes de requête HTTP.
net/http
./hello
devrait renvoyer une réponse "hello"./headers
devrait renvoyer tous les en-têtes de requête HTTP.8090
.## Exécutez le serveur en arrière-plan.
$ go run http-servers.go &
## Accédez à la route `/hello`.
$ curl localhost:8090/hello
hello
Voici le code complet ci-dessous :
// Écrire un serveur HTTP de base est facile en utilisant le
// package `net/http`.
package main
import (
"fmt"
"net/http"
)
// Un concept fondamental dans les serveurs `net/http` est
// les *handlers*. Un handler est un objet implémentant l'interface
// `http.Handler`. Une manière commune d'écrire
// un handler est d'utiliser l'adaptateur `http.HandlerFunc`
// sur des fonctions avec la signature appropriée.
func hello(w http.ResponseWriter, req *http.Request) {
// Les fonctions servant de handlers prennent un
// `http.ResponseWriter` et un `http.Request` en
// arguments. Le writer de réponse est utilisé pour remplir la
// réponse HTTP. Ici, notre réponse simple est juste
// "hello\n".
fmt.Fprintf(w, "hello\n")
}
func headers(w http.ResponseWriter, req *http.Request) {
// Ce handler fait quelque chose un peu plus
// sophistiqué en lisant tous les en-têtes de requête HTTP
// et en les renvoyant dans le corps de la réponse.
for name, headers := range req.Header {
for _, h := range headers {
fmt.Fprintf(w, "%v: %v\n", name, h)
}
}
}
func main() {
// Nous enregistrons nos handlers sur les itinéraires du serveur en utilisant la
// fonction pratique `http.HandleFunc`. Elle configure
// le *routeur par défaut* dans le package `net/http` et
// prend une fonction en argument.
http.HandleFunc("/hello", hello)
http.HandleFunc("/headers", headers)
// Enfin, nous appelons `ListenAndServe` avec le port
// et un handler. `nil` lui indique d'utiliser le routeur par défaut
// que nous venons de configurer.
http.ListenAndServe(":8090", nil)
}
Dans ce laboratoire, vous avez été requis d'écrire un serveur HTTP simple capable de gérer deux itinéraires : /hello
et /headers
. Vous avez appris à utiliser le package net/http
pour écrire des handlers pour chaque itinéraire et les enregistrer sur le serveur. Enfin, vous avez appris comment démarrer le serveur et écouter les requêtes entrantes.