0Pricing
Go Academy · Leçon

Créer un serveur HTTP

ListenAndServe, HandlerFunc et ServeMux

Créer un serveur HTTP est une leçon Go Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Go Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Go Academy comprend 4 leçons au total.

Paquet net/http

La bibliothèque standard de Go, net/http, fournit un serveur HTTP/1.1 et HTTP/2 adapté à la production, sans dépendances externes.

Serveur de base

Enregistrez un gestionnaire avec http.HandleFunc et commencez à écouter avec http.ListenAndServe :

http.HandleFunc("/hello", func(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintln(w, "Hello, World!")
})
log.Fatal(http.ListenAndServe(":8080", nil))

Interface http.Handler

Tout type qui implémente ServeHTTP(ResponseWriter, *Request) est un http.Handler. Utilisez-le pour les gestionnaires avec état qui intègrent une base de données ou une configuration.

type App struct{ db *sql.DB }

func (a *App) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    // use a.db
}

ServeMux

http.NewServeMux() crée un routeur isolé. Transmettez-le à http.ListenAndServe pour éviter le mux global par défaut, ce qui est plus sûr dans les bibliothèques.

mux := http.NewServeMux()
mux.HandleFunc("/api/users", usersHandler)
http.ListenAndServe(":8080", mux)

Répondre avec des codes d’état

Écrivez le code d’état avec w.WriteHeader(code) avant d’écrire le corps. Si vous appelez uniquement w.Write, le statut est 200 par défaut.

w.WriteHeader(http.StatusCreated)
w.Write([]byte("created"))

Écrire des réponses JSON

Définissez Content-Type avant d’écrire le corps, puis encodez-le avec json.Encoder :

w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(data)

Lire la requête

Accédez à la méthode, à l’URL, aux en-têtes, aux paramètres de requête et au corps via la structure *Request.

r.Method          // "GET", "POST", ...
r.URL.Path        // "/api/users"
r.URL.Query().Get("id") // query param
r.Header.Get("Authorization")

Analyser le corps JSON d’une requête

Décodez le corps de la requête avec json.Decoder. Limitez la taille du corps avec http.MaxBytesReader afin d’éviter l’épuisement de la mémoire.

r.Body = http.MaxBytesReader(w, r.Body, 1<<20)
var req CreateUserRequest
json.NewDecoder(r.Body).Decode(&req)

Configuration du serveur

Configurez les délais d’attente avec un http.Server personnalisé afin de prévenir les attaques par client lent :

srv := &http.Server{
    Addr:         ":8080",
    Handler:      mux,
    ReadTimeout:  5 * time.Second,
    WriteTimeout: 10 * time.Second,
    IdleTimeout:  120 * time.Second,
}
srv.ListenAndServe()

HTTPS

Utilisez srv.ListenAndServeTLS(certFile, keyFile) pour servir du HTTPS. Les certificats peuvent être auto-signés (développement) ou provenir de Let's Encrypt (production via golang.org/x/crypto/acme/autocert).

Composition des gestionnaires

Entourez les gestionnaires pour ajouter des préoccupations transversales (journalisation, authentification, récupération) sans modifier la logique métier. Retournez le gestionnaire suivant après la modification.

Vérification rapide

Pourquoi devez-vous définir ReadTimeout et WriteTimeout sur un http.Server ?

Récapitulatif&nbsp;: créer un serveur HTTP

Points clés :

  • HandleFunc + ListenAndServe pour les serveurs simples
  • http.Server personnalisé avec des délais d’attente pour la production
  • ServeMux pour un routage isolé
  • json.NewEncoder(w) pour les réponses JSON

Questions Fréquemment Posées

La leçon « Créer un serveur HTTP » est-elle gratuite ?

Oui — le texte complet de « Créer un serveur HTTP » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Go Academy, passe à CoddyKit PRO. Le cours Go Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Créer un serveur HTTP » ?

ListenAndServe, HandlerFunc et ServeMux Tu pratiques Go Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Go Academy ?

Aucune expérience préalable n'est requise. Go Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Créer un serveur HTTP » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Go Academy ?

Oui. Chaque leçon Go Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Créer un serveur HTTP
  2. Routage et paramètres de chemin
  3. Modèle des intergiciels
  4. Arrêt progressif
← Retour à Go Academy