Go est un langage puissant et flexible pour la création d'applications Web. Le filet package joue un rôle essentiel dans l'écosystème de Go.
Comme la plupart des langages de programmation côté serveur, Go est livré avec un package HTTP pour interagir avec le protocole HTTP. Le package Go correspondant est le http package, un sous-package du filet emballer.
Qu'est-ce que le paquet net/http ?
Le réseau/http package est l'une des bibliothèques standard de Go. Il fournit un ensemble complet de fonctions et de types pour créer des clients HTTP, des serveurs et d'autres opérations basées sur HTTP. Ceux-ci inclus:
- Fonctions pour effectuer des requêtes HTTP.
- Traitement des demandes et des réponses.
- Traitement des requêtes HTTP.
- Objets associés tels que les en-têtes et les cookies.
Le réseau/http prend également en charge le cryptage TLS/SSL, HTTP/2 et d'autres fonctionnalités avancées, ce qui en fait un outil essentiel pour les développeurs Go.
De nombreuses bibliothèques et frameworks Go populaires, de la boîte à outils Web Gorilla au framework Web Echo, s'appuient sur le réseau/http emballer.
Démarrage d'un serveur HTTP simple
Le démarrage des serveurs est l'une des opérations de base que vous devez comprendre pour travailler avec le protocole HTTP.
Voici un programme pour exécuter un serveur simple en Go:
emballer principal
importer (
"fmt"
"net/http"
)// le gestionnaire est un gestionnaire de requête-réponse HTTP typique dans Go; détails plus tard
fonctiongestionnaire(w http. ResponseWriter, r *http. Demande) {
// Fprintf formate la chaîne en écrivain
fmt. Fprintf (w, "Bonjour le monde!")
}
fonctionprincipal() {
http. HandleFunc("/", gestionnaire)
http. EcouteEtServe(":8080", néant)
}
Le gestionnaire La fonction est un gestionnaire de requête-réponse typique pour le http emballer. Cette fonction écrit la chaîne "Hello, World!" au rédacteur de réponse HTTP.
En exécutant le code et en visitant http://localhost: 8080/ dans un navigateur Web, vous devriez voir le message "Hello, World!" chaîne affichée dans votre navigateur.
Traitement des demandes et des réponses
Vous pouvez gérer les demandes entrantes avec le HandleFunc méthode de la http emballer. Le HandleFunc La méthode prend une chaîne de route et une fonction de gestionnaire.
Le http. Demande est une instance de la requête entrante, et vous pouvez utiliser les nombreuses méthodes de votre instance pour interagir avec les requêtes vers la route.
http. HandleFunc("/utilisateurs", fonction(w http. ResponseWriter, r *http. Demande) {
changer r. Méthode {
cas"OBTENIR":
// traite la requête GET
cas"POSTE":
// traite la requête POST
défaut:
http. Erreur (w, "Méthode de requête invalide", http. StatusMethodNotAllowed)
}
})
Le code ci-dessus utilise le http package pour définir une fonction de gestionnaire HTTP pour le /users itinéraire. La fonction de gestionnaire écoute les requêtes HTTP entrantes sur la route et les traite en fonction de la méthode de requête (par exemple, OBTENIR, POSTE, etc.)
La fonction de gestionnaire prend la ResponseWriter et Demande méthodes comme arguments. Le ResponseWriter est une interface qui aide le gestionnaire à écrire des données en réponse au client, et le Demande est une structure qui contient des informations sur la requête entrante, telles que la méthode HTTP, l'URL, les en-têtes, etc.
La fonction de gestionnaire ci-dessus utilise un changer pour déterminer la méthode de requête et exécuter différents blocs de code en fonction de la méthode. Si la méthode est OBTENIR, le gestionnaire gérera le OBTENIR demande. Sinon, la méthode est POSTE; il s'occupera de POSTE demande.
Si la méthode est autre chose, elle enverra un http. Erreur avec un message "Méthode de demande invalide" et un StatusMethodNotAllowedCode d'état HTTP au client.
Vous pouvez réécrire des chaînes au client à l'aide de la Écrire méthode de votre instance d'écrivain qui prend une tranche d'octets de chaînes et écrit la chaîne.
w. Écrire([]octet("Bonjour le monde!"))
Vous pouvez utiliser le WriteHeader méthode de votre ResponseWriter instance pour écrire des en-têtes au client.
w. Write Header (http. StatutOK)
Travailler avec le middleware HTTP
Le middleware se compose de fonctions qui interceptent les demandes HTTP entrantes pour les opérations avant que la demande ne passe à la fonction de gestionnaire suivante.
Voici un exemple de journalisation de la fonction de gestionnaire de middleware dans Go :
fonctionjournalisationMiddleware(http. Gestionnaire)http.Gestionnaire {
retour http. FonctionGestionnaire(fonction(w http. ResponseWriter, r *http. Demande) {
// enregistre la requête
suivant. ServirHTTP(w, r)
// enregistre la réponse
})
}
Le journalisationMiddleware La fonction prend un gestionnaire HTTP et renvoie un nouveau gestionnaire HTTP. Le gestionnaire HTTP renvoyé est une fonction anonyme qui accepte un rédacteur de réponse HTTP et une requête HTTP. La fonction enregistre la demande et appelle le ServirHTTP méthode sur la suivant Gestionnaire HTTP, transmettant l'auteur de la réponse et la demande en tant qu'arguments.
Vous pouvez gérer les fonctions du middleware avec le Gérer méthode de la http emballer. Le Gérer La méthode prend en charge la route et la fonction middleware.
http. Gérer("/", loggingMiddleware (http. HandlerFunc (gestionnaire)))
Redirections avec le package HTTP
La redirection est une opération courante pour les applications Web qui renvoient les utilisateurs vers d'autres ressources ou pages Web.
Vous pouvez rediriger vers une autre page Web en utilisant le Réorienter méthode de la http emballer.
http. Rediriger (w, r, " http://example.com", http. StatusMovedPermanently)
Le Réorienter la méthode prend en compte ResponseWriter et Demande instances, la nouvelle URL de page et un code d'état pour la redirection.
Vous pouvez créer des API complexes dans Go
Le http package est un outil puissant et flexible pour créer des API complexes. Vous pouvez utiliser la riche bibliothèque standard de Go et d'autres puissantes packages tiers pour ajouter des fonctionnalités à vos API, telles que la connectivité de la base de données et la prise en charge de différents sites Web cadres.
Avec Go, vous pouvez créer des API évolutives et hautement performantes qui gèrent facilement un trafic de requêtes important et des tâches de traitement de données complexes.