Qu'est-ce que chi et pourquoi l'utiliser ?
chi est un routeur HTTP léger, performant et idiomatique pour le langage de programmation Go. Conçu pour le développement d'applications web et d'API, il offre aux développeurs un outil puissant et flexible pour le routage des requêtes HTTP.
Contrairement au package standard net/http, chi propose :
- Compatibilité avec
net/http: chi implémente entièrement l'interfacehttp.Handler, ce qui permet une intégration facile avec le code Go existant et les middleware. - Routage contextuel : chi utilise
context.Contextpour transmettre les paramètres de route (par exemple, l'ID d'un utilisateur) entre les middleware et les gestionnaires. - Sous-routeurs (Subrouters) : Permet de regrouper les routes par blocs logiques (par exemple,
/api/v1/users). - Regroupement de middleware : Vous pouvez appliquer des middleware à l'ensemble du routeur ou à des groupes de routes spécifiques.
- Support intégré pour CORS, la journalisation, la compression et d'autres tâches courantes.
chi est idéal pour créer des API REST, des microservices et toute application web nécessitant une architecture propre, performante et facile à tester.
Installation de chi
Pour installer chi, utilisez le gestionnaire de packages standard de Go. Assurez-vous d'avoir Go (version 1.14 ou supérieure) installé.
go get -u github.com/go-chi/chi/v5
Après avoir exécuté cette commande, la bibliothèque sera ajoutée à votre fichier go.mod. Si vous utilisez Go Modules (recommandé), l'importation ressemblera à ceci :
import "github.com/go-chi/chi/v5"
Il est également courant d'installer le package middleware :
go get -u github.com/go-chi/cors
go get -u github.com/go-chi/chi/v5/middleware
Démarrage rapide avec un exemple de code
Créons un serveur HTTP simple qui répond aux requêtes GET.
package main
import (
"fmt"
"net/http"
"github.com/go-chi/chi/v5"
)
func main() {
r := chi.NewRouter()
// Définir une route
r.Get("/hello", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Bonjour, chi !")
})
// Lancer le serveur
http.ListenAndServe(":3000", r)
}
Exécutez ce code et ouvrez votre navigateur à l'adresse http://localhost:3000/hello. Vous verrez le message "Bonjour, chi !".
Méthodes et fonctions principales de chi
Examinons les méthodes clés de la bibliothèque chi. Tous les exemples supposent que vous avez déjà créé un routeur r := chi.NewRouter().
1. Get(pattern string, handlerFn http.HandlerFunc)
Fonction : Enregistre un gestionnaire pour la méthode HTTP GET selon le modèle de chemin spécifié.
Paramètres :
pattern— une chaîne de chemin (par exemple,/users,/users/{id}).handlerFn— une fonction de gestionnaire correspondant à la signaturehttp.HandlerFunc.
Exemple :
r.Get("/", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Page d'accueil"))
})
2. Post(pattern string, handlerFn http.HandlerFunc)
Fonction : Enregistre un gestionnaire pour la méthode HTTP POST.
Paramètres : Similaires à Get.
Exemple :
r.Post("/users", func(w http.ResponseWriter, r *http.Request) {
// Logique de création d'utilisateur
w.WriteHeader(http.StatusCreated)
w.Write([]byte("Utilisateur créé"))
})
3. Put(pattern string, handlerFn http.HandlerFunc)
Fonction : Enregistre un gestionnaire pour la méthode HTTP PUT (généralement utilisée pour une mise à jour complète
Aussi dans la bibliothèque
Apprentissage automatique en C++ : aperçu des bibliothèques clés
Flow Kotlin : guide complet avec exemples pratiques
Traitement JSON en Swift : Codable, Foundation et SwiftyJSON pour iOS/macOS
Validation des données en C# (.NET) : bibliothèques et approches
Client HTTP pour C++ : top bibliothèques pour travailler avec le réseau