Une introduction au package HTTP de Go

Une introduction au package HTTP de Go
Des lecteurs comme vous aident à soutenir MUO. Lorsque vous effectuez un achat en utilisant des liens sur notre site, nous pouvons gagner une commission d'affiliation. Lire la suite.

Go est un langage puissant et flexible pour la création d'applications Web. Les rapporter 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 rapporter forfait.





Qu'est-ce que le paquet net/http ?

  aperçu du paquet http

Les 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.

Les 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 forfait.



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 :





 package main 

import (
    "fmt"
    "net/http"
)

// handler is a typical HTTP request-response handler in Go; details later
func handler(w http.ResponseWriter, r *http.Request) {
    // Fprintf formats the string to a writer
    fmt.Fprintf(w, "Hello, World!")
}

func main() {
    http.HandleFunc("/", handler)
    http.ListenAndServe(":8080", nil)
}

Les gestionnaire La fonction est un gestionnaire de requête-réponse typique pour le http forfait. 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.





  résultat du démarrage d'un serveur

Traitement des demandes et des réponses

Vous pouvez gérer les demandes entrantes avec le HandleFunc méthode de la http forfait. Les HandleFunc La méthode prend une chaîne de route et une fonction de gestionnaire.

Les 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("/users", func(w http.ResponseWriter, r *http.Request) { 
    switch r.Method {
    case "GET":
        // handle GET request
    case "POST":
        // handle POST request
    default:
        http.Error(w, "Invalid request method", http.StatusMethodNotAllowed)
    }
})

Le code ci-dessus utilise le http package pour définir une fonction de gestionnaire HTTP pour le /utilisateurs 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 , PUBLIER , etc.)

La fonction de gestionnaire prend la ResponseWriter et Demande méthodes comme arguments. Les 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 PUBLIER; il s'occupera de PUBLIER demande.

meilleure extension vpn gratuite pour chrome 2018

Si la méthode est autre chose, elle enverra un Erreur HTTP avec un message 'Méthode de demande invalide' et un StatusMethodNotAllowed Code d'état HTTP au client.

Vous pouvez réécrire des chaînes au client à l'aide de la Écrivez méthode de votre instance d'écrivain qui prend une tranche d'octets de chaînes et écrit la chaîne.

 w.Write([]byte("Hello, World!")) 

Vous pouvez utiliser le WriteHeader méthode de votre ResponseWriter instance pour écrire des en-têtes au client.

 w.WriteHeader(http.StatusOK) 

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 :

 func loggingMiddleware(next http.Handler) http.Handler { 
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        // log the request
        next.ServeHTTP(w, r)
        // log the response
    })
}

Les 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 forfait. Les Gérer La méthode prend en charge la route et la fonction middleware.

 http.Handle("/", loggingMiddleware(http.HandlerFunc(handler))) 

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 forfait.

 http.Redirect(w, r, "http://example.com", http.StatusMovedPermanently) 

Les 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

Les 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 packages tiers puissants 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 frameworks Web.

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.