Maison >développement back-end >Golang >golang net demande externe
Golang est un langage de programmation puissant et fiable qui est privilégié par de plus en plus de développeurs. Parmi eux, le traitement des requêtes réseau est l'un des points forts de Golang. Cet article expliquera comment Golang demande des ressources réseau externes.
La bibliothèque standard Golang est livrée avec un package HTTP, qui fournit un client et un serveur, rendant la communication entre eux très facile. Le client HTTP fournit une interface facile à utiliser qui permet aux utilisateurs d'effectuer des requêtes HTTP et d'obtenir des réponses.
Le code suivant montre comment utiliser des paquets HTTP pour obtenir le contenu d'une page Web :
package main import ( "fmt" "net/http" ) func main() { resp, err := http.Get("http://www.baidu.com") if err != nil { fmt.Println("Error:", err) } defer resp.Body.Close() fmt.Println(resp.Status) }
Dans le code ci-dessus, nous appelons la méthode http.Get() pour obtenir le contenu de la page d'accueil de Baidu, puis attribuons le résultat renvoyé réponse et erreur à deux variables resp et err. Si une erreur d'accès se produit, le message d'erreur est généré ; s'il n'y a pas d'erreur, le corps de la réponse est fermé et le code d'état de la réponse est généré.
Si vous devez effectuer certaines tâches dont HTTP n'est pas capable, le package TCP dans Golang peut entrer en jeu. Ce package fournit un client et un serveur réseau entièrement personnalisables, permettant aux utilisateurs de communiquer comme ils le souhaitent.
Ce qui suit est un exemple d'envoi de données à l'aide de paquets TCP :
package main import ( "fmt" "net" ) func main() { conn, err := net.Dial("tcp", "golang.org:80") if err != nil { fmt.Println("Error:", err) } fmt.Fprintf(conn, "GET / HTTP/1.0 ") status, err := bufio.NewReader(conn).ReadString(' ') fmt.Println(status) }
Dans le code ci-dessus, nous utilisons la méthode net.Dial() pour créer une connexion TCP, en spécifiant que le protocole d'accès est HTTP et l'adresse d'accès est golang .org : 80 . Ensuite, nous utilisons la méthode fmt.Fprintf() pour envoyer la requête HTTP à la connexion établie. Enfin, nous lisons les données de la connexion de réponse et envoyons le code de réponse au terminal.
En plus des packages HTTP et TCP de la bibliothèque standard Golang, il existe de nombreux packages tiers parmi lesquels choisir, dont certains fournissent des API plus flexibles et ont des fonctionnalités plus avancées.
Voici plusieurs packages tiers qui méritent d'être mentionnés :
3.1 Le client API RESTful de Golang -----resty
resty est un client API RESTful léger dans Golang, qui prend en charge HTTP et HTTPS et une authentification de base. L'utilisation de Resty facilite grandement la demande de données sur le réseau HTTP. Voici un exemple d'utilisation de resty pour effectuer des requêtes HTTP :
package main import ( "fmt" "github.com/go-resty/resty/v2" ) func main() { client := resty.New() resp, err := client.R(). EnableTrace(). Get("http://www.baidu.com") if err != nil { fmt.Println("Error:", err) } fmt.Println(resp.Body()) }
Dans le code ci-dessus, nous utilisons la méthode resty.New() pour créer un client resty, puis utilisons la méthode client.R() pour envoyer la requête . Utilisez la méthode EnableTrace() pour activer le suivi de débogage afin de faciliter le débogage ultérieur. Enfin, nous générons le corps de la réponse.
3.2 Le framework HTTP de Golang -----Gin
Gin est un framework HTTP rapide et flexible dans Golang. Ses performances sont plus rapides que les autres frameworks. Il dispose d'un mécanisme de plug-in middleware et prend en charge le routage, la sortie de la console et l'analyse des paramètres. , traitement des formulaires et autres fonctions. Voici un exemple d'utilisation du framework Gin pour gérer les requêtes HTTP :
package main import ( "github.com/gin-gonic/gin" ) func main() { r := gin.Default() r.GET("/", func(c *gin.Context) { c.String(200, "Hello, World!") }) r.GET("/ping", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "pong", }) }) r.Run(":8080") }
Dans le code ci-dessus, nous utilisons la méthode gin.Default() pour créer un moteur de routage prédéfini, puis utilisons la méthode r.GET() pour gérer Requêtes HTTP GET. Pour la route racine "/", nous utilisons la méthode c.String() pour renvoyer "Hello, World!", pour la route "/ping", nous utilisons la méthode c.JSON() pour renvoyer le format JSON, et enfin, nous utilisons la méthode r.Run() pour démarrer Gin.
Cet article présente comment Golang demande des ressources réseau externes, notamment des packages HTTP et TCP et plusieurs packages tiers. Les développeurs peuvent choisir une méthode qui leur convient en fonction de leurs besoins pour effectuer des requêtes réseau, complétant ainsi efficacement le développement des applications Golang.
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!