1. Introduction
Avec la popularité croissante de l'API RESTful, de plus en plus de développeurs commencent à essayer de développer eux-mêmes des services http. En tant que langage efficace et hautement parallèle, la bibliothèque net/http de golang peut nous aider à créer facilement des services http fiables et performants. Aujourd'hui, nous allons apprendre à utiliser Golang pour implémenter http.
2. Préparation
Nous devons d'abord installer l'environnement golang et utiliser l'outil de gestion de paquets de golang, go mod, pour gérer les dépendances de nos packages.
3. Golang implémente http
Nous pouvons utiliser la bibliothèque net/http de golang pour implémenter le service http :
1. /http package Avec le package fmt
nous devons importer le package net/http pour utiliser l'interface liée au service http qu'il fournit, et nous utilisons le package fmt pour générer des journaux.
import ( "fmt" "net/http" )
2. Implémenter le service http
Nous pouvons implémenter le service http en appelant l'interface fournie par la bibliothèque net/http. Parmi eux, http.HandleFunc est utilisé pour enregistrer les routes. Les paramètres resp et req dans la fonction de rappel représentent respectivement la réponse et la demande.
func main() { http.HandleFunc("/", myHandler) http.ListenAndServe(":8080", nil) } func myHandler(resp http.ResponseWriter, req *http.Request) { fmt.Println("收到请求!") resp.Write([]byte("Hello world!")) }
3. Exécutez le service http
Nous entrons dans le répertoire racine du projet sur la ligne de commande, puis exécutons la commande suivante :
go run main.go
À ce moment, nous sont dans le navigateur. Entrez http://localhost:8080 et vous verrez "Bonjour tout le monde !". Il s'agit d'une implémentation complète du service http.
4. Correspondance d'itinéraire
Dans le développement réel, nous devons spécifier différentes logiques de traitement pour différentes routes. Le package http de golang fournit une méthode simple de correspondance d'itinéraire, qui consiste à utiliser la fonction http.HandleFunc pour enregistrer les itinéraires.
Dans l'exemple ci-dessus, nous avons utilisé le caractère de routage par défaut "/", ce qui signifie que toutes les demandes que nous acceptons seront transmises à myHandler pour traitement. Dans les applications pratiques, nous devons généralement spécifier différentes logiques de traitement pour différents itinéraires. La correspondance de route peut être obtenue de la manière suivante :
http.HandleFunc("/user", userHandler) http.HandleFunc("/book", bookHandler)
De cette façon, lorsque http://localhost:8080/user est demandé, la fonction userHandler sera exécutée lorsque http://localhost : 8080/book est demandé, la fonction bookHandler sera exécutée.
5. Middleware
Le Middleware est un mode très courant, qui joue un rôle important dans le processus de traitement des requêtes http. La bibliothèque http de Golang fournit un moyen simple d'implémenter un middleware. Nous pouvons utiliser http.HandlerFunc pour encapsuler une fonction permettant d'implémenter un middleware.
Ce qui suit est un exemple simple de middleware pour enregistrer l'heure de la requête en cours :
func logMiddleware(next http.HandlerFunc) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { start := time.Now() next(w, r) fmt.Printf("%s %s ", r.Method, r.URL.Path, time.Since(start)) } } http.HandleFunc("/", logMiddleware(myHandler))
Dans ce code, nous définissons un middleware logMiddleware et ajoutons myHandler Wrapped à l'intérieur. La valeur de retour de la fonction logMiddleware est une fonction qui recevra les paramètres ResponseWriter et Request, imprimera la méthode, le chemin et le temps de traitement de la requête en cours à l'intérieur de la fonction, et enfin appellera next pour continuer l'exécution. Dans les applications pratiques, nous pouvons ajouter plus de logique à l'implémentation de logMiddleware, comme l'authentification d'identité, la vérification des paramètres de demande, etc.
6. Gestion des erreurs
Dans les applications pratiques, nous devons gérer les erreurs qui peuvent survenir dans les requêtes http. La bibliothèque http de golang fournit une méthode simple de gestion des erreurs, en utilisant la fonction http.Error.
Ce qui suit est un exemple simple de gestion des erreurs :
func myHandler(w http.ResponseWriter, r *http.Request) { file, err := os.Open("abc.txt") if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } defer file.Close() }
Dans ce code, nous essayons d'ouvrir un fichier qui n'existe pas et utilisons http.Error pour renvoyer une erreur réponse. Le premier paramètre de http.Error représente la réponse ; le deuxième paramètre est le message d'erreur et le troisième paramètre est le code d'état http ;
7. Résumé
Dans cet article, nous avons présenté comment utiliser Golang pour implémenter les services http. Plus précisément, nous avons appris à utiliser la bibliothèque net/http de Golang pour implémenter les services http, la correspondance de routes, le middleware et la gestion des erreurs. Pour les débutants, maîtriser ces connaissances suffit pour écrire un service http simple.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!