Comment écrire une API REST en Go en 30 minutes : guide pas à pas

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : pourquoi Go est-il idéal pour les API REST ?



Go (Golang) est un langage de programmation compilé moderne, créé chez Google. Il combine les hautes performances du C++ et la simplicité de Python. Si vous avez besoin d'écrire rapidement une API REST, Go est l'un des meilleurs choix. Dans cet article, nous allons créer une API REST complète en Go en 30 minutes, en utilisant uniquement la bibliothèque standard net/http. Vous verrez à quel point il est simple de traiter les requêtes HTTP, de les router et de renvoyer des réponses JSON.



À la fin de cet article, vous serez capable d'écrire votre propre API, qui pourra être déployée sur un serveur. Nous n'utiliserons pas de frameworks tiers – seulement du Go pur, ce qui rend le code léger et rapide.



Étape 1 : Installation de Go et création du projet



Installation de Go

Si vous n'avez pas encore installé Go, téléchargez la dernière version depuis le site officiel. Suivez les instructions pour votre système d'exploitation. Après l'installation, vérifiez la version dans le terminal :



go version


Vous devriez voir quelque chose comme go version go1.22.0 linux/amd64.



Création du projet

Créez un nouveau répertoire pour le projet et initialisez le module Go :



mkdir go-rest-apicd go-rest-apigo mod init go-rest-api


La structure du projet est maintenant prête. Nous écrirons tout le code dans un seul fichier main.go, pour ne pas compliquer l'exemple.



Étape 2 : Un serveur HTTP simple en Go



Commençons par un serveur HTTP de base. Ouvrez le fichier main.go et ajoutez le code suivant :



package main

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

func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, REST API on Go!") })

log.Println("Serveur démarré sur le port 8080") log.Fatal(http.ListenAndServe(":8080", nil))}


Lancez le serveur avec la commande go run main.go et ouvrez votre navigateur à l'adresse http://localhost:8080. Vous verrez un message de bienvenue. Félicitations – votre premier serveur HTTP en Go fonctionne !



Analyse du code

  • http.HandleFunc – enregistre un gestionnaire pour la route "/".
  • http.ListenAndServe – démarre le serveur sur le port 8080.
  • log.Fatal – affiche une erreur si le serveur ne démarre pas.


Étape 3 : Ajout du routage et du traitement JSON



Ajoutons maintenant la prise en charge du style REST : GET, POST, PUT, DELETE. Nous allons créer une simple "base de données" en mémoire (une slice de structures) et gérer une liste de tâches (todo list).



Structure de données

Ajoutez dans main.go la description de la structure Task et une slice globale :



type Task struct {    ID   int    `json:"id"`    Name string `json:"name"`}

var tasks []Taskvar nextID int = 1


Gestionnaires de routes

Créons un gestionnaire principal qui analysera la méthode HTTP et appellera la fonction appropriée :



func tasksHandler(w http.ResponseWriter, r *http.Request) {    switch r.Method {    case http.MethodGet:        getTasks(w, r)    case http.MethodPost:        createTask(w, r)    default:        http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)    }}

func taskHandler(w http.ResponseWriter, r *http.Request) { // Extrait l'ID de l'URL idStr := strings.TrimPrefix(r.URL.Path, "/tasks/") id, err := strconv.Atoi(idStr) if err != nil { http.Error(w, "Invalid task ID", http.StatusBadRequest) return }

switch r.Method { case http.MethodGet: getTask(w, r, id) case http.MethodPut: updateTask(w, r, id) case http.MethodDelete: deleteTask(w, r, id) default: http.Error(w, "Method not allowed", http.StatusMethodNot

Blogs

Book Recommendations