Dans le développement Web moderne, les API sont devenues une partie intégrante. Afin d'effectuer la transmission des données et l'interaction du client au serveur, nous devons envoyer et recevoir des requêtes et des réponses HTTP. Dans cet article, nous utiliserons le langage Go pour implémenter le processus de demande d'API.
Le langage Go est un langage de programmation open source très approprié pour créer des applications Web hautement concurrentes, évolutives et efficaces. Dans cet article, nous utiliserons la bibliothèque standard du langage Go ou des bibliothèques tierces pour demander l'API et traiter les données de réponse.
Références :
Avant de comprendre comment utiliser le langage Go pour demander des API, nous devons d'abord comprendre comment fonctionnent les requêtes HTTP. Les requêtes HTTP se composent généralement de trois parties : la ligne de requête, les en-têtes de requête et le corps de la requête.
La ligne de requête comprend la méthode demandée, l'URL et la version HTTP. Ici, nous utilisons généralement la méthode GET car c’est la méthode la plus couramment utilisée.
Les en-têtes de requête incluent différents types de métadonnées. Par exemple, nous pouvons utiliser des en-têtes de requête pour transmettre des informations telles que des jetons d'autorisation, des agents utilisateurs et des cookies.
Le corps de la requête contient généralement les données envoyées au serveur. Cependant, lors de l’utilisation d’une requête GET, le corps de la requête est généralement vide.
La bibliothèque standard du langage Go comprend un package HTTP, qui fournit des fonctions de base pour l'envoi de requêtes HTTP et le traitement des réponses.
Ce qui suit est un exemple de demande d'API à l'aide de la bibliothèque standard du langage Go :
package main import ( "fmt" "net/http" ) func main() { resp, err := http.Get("https://jsonplaceholder.typicode.com/posts") if err != nil { fmt.Println("请求错误:", err) return } defer resp.Body.Close() fmt.Println("响应状态码:", resp.StatusCode) fmt.Println("响应头部:", resp.Header) }
Dans cet exemple, nous utilisons http.Get() pour envoyer une requête HTTP GET, en transmettant l'adresse API demandée.
Si la demande aboutit, nous pouvons lire le contenu du corps de la réponse via resp.Body. Enfin, nous fermons le corps de la réponse en utilisant resp.Body.Close() pour éviter les fuites de ressources.
Dans cet exemple, nous affichons simplement le code d'état et les informations d'en-tête de la réponse. Si nous voulons gérer le corps de la requête, nous devons lire le contenu de la réponse.
La bibliothèque standard du langage Go prend en charge le traitement de plusieurs corps de réponse. Par exemple, nous pouvons utiliser le package json pour traiter les réponses au format JSON, utiliser le package xml pour traiter les réponses au format XML, etc. Si la réponse envoyée par l'API n'est pas dans l'un de ces formats de données, nous pouvons utiliser le package io pour lire le corps de la réponse.
Ce qui suit est un exemple d'utilisation de la bibliothèque standard Go pour traiter les réponses au format JSON :
package main import ( "encoding/json" "fmt" "net/http" ) type Post struct { UserId int `json:"userId"` Id int `json:"id"` Title string `json:"title"` Body string `json:"body"` } func main() { resp, err := http.Get("https://jsonplaceholder.typicode.com/posts") if err != nil { fmt.Println("请求错误:", err) return } defer resp.Body.Close() var posts []Post err = json.NewDecoder(resp.Body).Decode(&posts) if err != nil { fmt.Println("解析错误:", err) return } for _, p := range posts { fmt.Println(p) } }
Dans cet exemple, nous définissons une structure Post, qui correspond au format JSON renvoyé par l'API. Nous utilisons le package json pour analyser le corps de la réponse et analyser le JSON dans une structure Post.
Notez que nous avons passé le paramètre &posts car la méthode json.NewDecoder() nécessite un pointeur vers la variable analysée. Enfin, nous imprimons tous les messages demandés.
En plus de la bibliothèque standard du langage Go, il existe également des bibliothèques tierces qui peuvent simplifier le processus de demande d'API. Par exemple, la bibliothèque Resty peut rendre l'API de requête plus simple et plus facile à utiliser.
Ce qui suit est un exemple d'utilisation de la bibliothèque Resty pour demander l'API :
package main import ( "fmt" "github.com/go-resty/resty" ) type Post struct { UserId int `json:"userId"` Id int `json:"id"` Title string `json:"title"` Body string `json:"body"` } func main() { client := resty.New() resp, err := client.R().Get("https://jsonplaceholder.typicode.com/posts") if err != nil { fmt.Println("请求错误:", err) return } var posts []Post err = json.Unmarshal(resp.Body(), &posts) if err != nil { fmt.Println("解析错误:", err) return } for _, p := range posts { fmt.Println(p) } }
Dans cet exemple, nous utilisons la bibliothèque Resty pour envoyer la requête, où client.R().Get() est un raccourci pour envoyer un Requête OBTENIR. Nous utilisons la méthode Unmarshal() pour analyser le corps de la réponse et analyser le JSON dans une structure Post.
Contrairement à la bibliothèque standard Go, la bibliothèque Resty prend également en charge des fonctions telles que l'ajout d'en-têtes de requête, la transmission de paramètres, la définition de proxys, etc., rendant les requêtes API plus flexibles et plus pratiques.
Dans cet article, nous avons appris à utiliser le langage Go pour envoyer des requêtes API et traiter les données de réponse. Nous avons découvert les trois composants des requêtes HTTP et comment utiliser la bibliothèque standard du langage Go et la bibliothèque Resty.
Bien entendu, en plus de ces bibliothèques, il existe de nombreuses autres bibliothèques tierces qui peuvent être utilisées. Grâce à l'apprentissage et à l'expérimentation continus, nous pouvons trouver les bibliothèques et les outils les plus adaptés au projet en cours et les utiliser pour améliorer l'efficacité du développement et la qualité du code.
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!