Serveur HTTP de base en Go

GolangGolangBeginner
Pratiquer maintenant

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

Introduction

Ce laboratoire vise à tester votre capacité à écrire un serveur HTTP de base en utilisant le package net/http en Golang.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL go(("Golang")) -.-> go/NetworkingGroup(["Networking"]) go/NetworkingGroup -.-> go/http_server("HTTP Server") subgraph Lab Skills go/http_server -.-> lab-15482{{"Serveur HTTP de base en Go"}} end

Serveur HTTP

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.

  • Le serveur devrait utiliser le package net/http.
  • La route /hello devrait renvoyer une réponse "hello".
  • La route /headers devrait renvoyer tous les en-têtes de requête HTTP.
  • Le serveur devrait écouter sur le port 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)
}

Sommaire

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.