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.
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.
importer (
"octets"
"encodage/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"
réponse, euh := http. Obtenir (url)
si erreur != néant {
fmt. Printf("Il y a eu une erreur dans la requête API %s", err. Erreur())
} autre {
// continue [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.
} autre {
//... [1] suite
responseData, err := ioutil. Lire tout (réponse. Corps)
si erreur != néant {
fmt. Printf("Une erreur s'est produite lors de l'analyse du corps de la requête %s", err. Erreur())
} autre {
// continue [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.
} autre {
//... [2] suite
fmt. Imprimerln(chaîne de caractères(réponseDonnées))
}
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.
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.
taper JSON structure {
Info chaîne de caractères
message chaîne de caractères
}
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: "en attente de succès",
message: "la demande doit revenir ",
}
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, erreur := json. Maréchal (jsonInstance)
si erreur != néant {
fmt. Println("il y a eu une erreur avec le JSON", err. Erreur())
} autre {
// continue [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.
} autre {
//... suite [1]
réponse, euh := http. Post (url, "application/json", octets. NouveauBuffer (jsonData))
si erreur != néant {
fmt. Println("il y a eu une erreur avec la requête", err. Erreur())
} autre {
// continue [2] ...
}
}
Encore une fois, vous pouvez lire le corps de la réponse en utilisant le Lis tout méthode de la ioutil forfait:
} autre {
//... suite [2]
data, err := ioutil. Lire tout (réponse. Corps)
si erreur != néant {
fmt. Println("il y a eu une erreur lors de la lecture du corps de la requête", err. Erreur())
} autre {
fmt. Imprimerln(chaîne de caractères(Les données))
}
}
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.
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.