Consommer des API RESTful avec Go

Consommer des API RESTful avec Go

Les API RESTful sont des architectures populaires pour le transfert de données sur le Web. Les API RESTful utilisent généralement HTTP, ce qui les rend adaptées aux cas où l'apatridie est importante.





Comme tout langage côté serveur, vous pouvez interagir avec le protocole HTTP et effectuer des requêtes HTTP dans Go.





Premiers pas avec les API RESTful dans Go

La http fournit la plupart des fonctionnalités dont vous aurez besoin pour interagir avec le protocole HTTP dans Go. Cela inclut de faire des requêtes HTTP, et vous n'avez pas nécessairement besoin dépendances externes, comme Gin ou une base de données .





UTILISEZ LA VIDÉO DU JOUR

Vous pouvez utiliser le http package pour consommer des API et récupérer des pages pour grattage Web dans Go .

Importez ces packages pour commencer à envoyer des requêtes HTTP dans Go.



import ( 
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)

Vous utiliserez le octets package pour manipuler des tranches d'octets, le json package pour formater les données de la demande, le fmt package pour écrire sur la sortie standard, le ioutil package pour l'entrée et la sortie, et le http package pour l'envoi des demandes.

Une simple requête GET en Go

Typique OBTENIR demande de lire des données à partir d'un serveur et peut fournir des paramètres pour les données en fonction de la nature et des spécifications de l'API.





Dans ce didacticiel, vous apprendrez à utiliser les API RESTful à l'aide du service de requête et de réponse simple de httpbin.

Voici un exemple de requête HTTP avec Go :





url := "https://httpbin.org/get" 
response, err := http.Get(url)

if err != nil {
fmt.Printf("There was an error from the API request %s", err.Error())
} else {
// continues [1] ...
}

La URL variable est le point de terminaison auquel vous envoyez la demande. La Obtenir la méthode prend l'URL, exécute le Obtenir request et renvoie la réponse, y compris ses en-têtes et son corps.

Vous pouvez gérer les éventuelles erreurs de la requête en fonction de vos besoins. S'il n'y a pas d'erreurs, vous pouvez procéder à l'extraction des informations dont vous avez besoin à partir du Obtenir demande.

} else { 
// ... [1] continued
responseData, err := ioutil.ReadAll(response.Body)

if err != nil {
fmt.Printf("There was an error from parsing the request body %s", err.Error())
} else {
// continues [2] ...
}
}

La réponse est Corps champ contient le corps de la réponse. En utilisant le Lis tout méthode de la ioutil package, vous pouvez lire le corps de la réponse et gérer les éventuelles erreurs.

} else { 
// ... [2] continued
fmt.Println(string(responseData))
}

La autre L'instruction imprime le corps de la réponse sur votre console s'il n'y a pas d'erreurs de l'opération de lecture.

Voici le résultat de la OBTENIR demande au point de terminaison de httpbin.

  résultat de la requête GET

Une simple requête POST en Go

Les requêtes POST typiques fournissent des charges utiles de données au serveur, et le serveur renvoie une réponse en fonction de l'opération.

Voici une structure simple pour encoder une charge utile JSON sur le serveur dans le cadre de la requête POST.

la ps4 est-elle rétrocompatible avec les jeux ps3
type JSON struct { 
info string
message string
}

La JSON structure a le Info et message champs de chaîne, et vous initialiserez une instance de struct pour la requête.

url := "https://httpbin.org/post" 

jsonInstance := JSON {
info: "expecting success",
message: "the request should return ",
}

La URL La variable stocke le point de terminaison de la demande POST à ​​partir du site Web httpbin. La jsonInstance variable est une instance de la structure JSON que vous pouvez utiliser pour stocker et envoyer des données structurées.

Vous pouvez utiliser le Maréchal méthode de la json package pour formater JSON pour la requête.

jsonData, err := json.Marshal(jsonInstance) 
if err != nil {
fmt.Println("there was an error with the JSON", err.Error())
} else {
// continues [1] ...
}

La Maréchal La méthode renvoie également une erreur que vous pouvez gérer. S'il n'y a pas d'erreurs avec l'opération de marshaling JSON, vous pouvez procéder à la requête POST.

Vous pouvez utiliser le Poste méthode pour faire des requêtes POST. La Poste La méthode prend en compte le point de terminaison de l'URL, le type de contenu de la demande et un tampon de la charge utile. Il renvoie la réponse et une erreur.

} else { 
// ... continued [1]
response, err := http.Post(url, "application/json", bytes.NewBuffer(jsonData))

if err != nil {
fmt.Println("there was an error with the request", err.Error())
} else {
// continues [2] ...
}
}

Encore une fois, vous pouvez lire le corps de la réponse en utilisant le Lis tout méthode de la ioutil forfait:

} else { 
// ... continued [2]
data, err := ioutil.ReadAll(response.Body)

if err != nil {
fmt.Println("there was an error reading the request body", err.Error())
} else {
fmt.Println(string(data))
}
}

La Imprimerln L'instruction affiche le résultat de la requête HTTP sur votre console.

Comme le documentation httpbin spécifie, ce point de terminaison POST renvoie les données de demande que vous lui envoyez.

  résultat de la requête POST

Créer des applications Web dans Go est facile

Vous pouvez créer des applications Web avec diverses fonctionnalités dans Go sans dépendances.

La http package contient les fonctions dont vous aurez besoin pour la plupart de vos opérations. Vous pouvez utiliser ce package avec d'autres comme le json package pour les opérations JSON, le le contexte package pour la signalisation et le package de modèle pour la création de modèles. Il existe de nombreux autres packages dans la bibliothèque standard.