Demande de Golang HTTP

Demande de Golang HTTP

Une demande HTTP fait référence à une action effectuée par un client HTTP sur une ressource HTTP (protocole) spécifique. La ressource est principalement identifiée par une URL comme un nom de domaine ou une adresse IP.

Les demandes HTTP sont l'un des éléments les plus constitutifs du Web moderne. En utilisant la demande HTTP, nous pouvons demander des ressources telles que des pages Web, des vidéos, des images et d'autres fichiers à partir d'un serveur distant.

Dans cet article, nous apprendrons à créer un client HTTP de base en utilisant le langage de programmation Go.

Exigences

Dans cet article, vous aurez besoin des ressources suivantes:

  1. Allez compilateur installé sur votre système.
  2. Connaissances de base GO.
  3. Un éditeur de texte.

Http

La première méthode que nous allons implémenter est la méthode HTTP Get. Une méthode GET nous permet de demander des données à partir d'une ressource spécifiée. Par exemple, lorsque nous devons aller chercher des articles du Linuxhint.com serveur, nous utilisons une méthode GET.

La première étape consiste à vous assurer de configurer votre projet. Si vous ne connaissez pas comment créer et travailler avec un projet Go, consultez notre tutoriel sur l'installation Go.

Une fois le projet créé, ouvrez votre fichier GO principal et importez le package net / http à partir de la bibliothèque standard Go.

Le package Net / HTTP nous fournit les fonctionnalités et les services publics pour faire la demande HTTP aux serveurs distants.

Importez le package net / http en ajoutant la ligne ci-dessous dans votre fichier Go.

importer (
"net / http"
)

Dans le package Net / HTTP, il existe une méthode GET qui nous permet de faire des méthodes HTTP Get. La syntaxe de fonction est comme indiqué ci-dessous:

func get (URL String) (réponse resp *, erre d'erreur)

La fonction prend une URL comme argument et renvoie la réponse en tant que pointeur vers la structure et une erreur (le cas échéant).

Si la méthode ne rencontre pas d'erreur, la réponse renvoyée contient le corps de réponse de la ressource demandée.

Pour utiliser la méthode GET, nous pouvons créer du code comme indiqué:

resp, err: = http.Get ("https: // api.SpaceXdata.com / v4 / lancements / dernier ")
Si err != nil
enregistrer.Fatal (euh)

Dans l'exemple ci-dessus, nous appelons la méthode GET et passons l'URL à la ressource à laquelle nous souhaitons accéder en tant que chaîne.

Dans notre exemple, nous utilisons l'API SpaceX.

Comme vous le remarquerez, la fonction renvoie deux valeurs que nous stockons en deux variables: RESP et ERR qui maintient la réponse renvoyée et l'erreur, respectivement.

Gardez à l'esprit que le res ne contient rien d'autre qu'un pointeur vers la structure tenant les données réelles. Par conséquent, si nous essayons de l'imprimer, nous obtiendrons un tas de données mélangées.

Un exemple de sortie de la demande ci-dessus est comme indiqué ci-dessous:

Pour que nous visions les données réelles, nous devons accéder à la propriété corporelle sur la structure retournée. Nous devons ensuite le lire et l'imprimer sur la console, ou l'enregistrer dans un fichier.

Pour cela, nous pouvons utiliser le ioutil.Méthode ReadMe. Cette méthode est définie dans le package ioutil. Il renvoie le corps de réponse et une erreur.

Remarque: Après avoir lu l'organisme de réponse, nous devons le fermer pour éviter de verrouiller d'autres opérations dans votre programme.

Nous pouvons le faire en définissant la méthode de fermeture pour s'exécuter après que la fonction principale soit finie. Le mot-clé de report dans Go vient en main.

Le respiration.Corps.Close () nous permet de fermer le corps de réponse après la lecture. Une fois que nous avons lu le corps de réponse, nous pouvons l'imprimer à la console comme implémenté dans le code ci-dessous:

Consultez notre tutoriel sur Golang Defer pour en savoir plus

package principal
importer (
"FMT"
"io / ioutil"
"enregistrer"
"net / http"
)
func main ()
resp, err: = http.Get ("https: // api.SpaceXdata.com / v4 / lancements / dernier ")
Si err != nil
enregistrer.Fatal (euh)

// Fermer le corps
différer respiration.Corps.Fermer()
// Lire le corps
Corps, euh: = ioutil.Readall (resp.Corps)
Si err != nil
enregistrer.Fatal (euh)

Le code ci-dessus implémente un client HTTP dans GO capable de faire une demande HTTP GET à la méthode spécifiée.

Un exemple de valeur de retour est comme indiqué:

Pour une meilleure lisibilité, vous pouvez formater la réponse au format de lisible-json ou effectuer le maréchal et un unmarshal pour sélectionner la sortie souhaitée.

Consultez notre tutoriel sur JSON Marshal et Unmarshal pour en savoir plus.

HTTP Post

La partie suivante d'un client HTTP fait la méthode postale. Une méthode HTTP vous permet d'envoyer des données au serveur et d'effectuer une action sur la ressource spécifiée. Cela pourrait créer, supprimer ou mettre à jour une ressource.

En Go, nous pouvons faire une demande de poste à l'aide du package net / http. Il nous fournit la méthode post-post, nous permettant d'envoyer des données à un serveur.

La syntaxe de fonction est comme indiqué ci-dessous:

Func Post (URL, String ContentType, Body Io.Lecteur) (réponse respiratoire, erreur d'erreur)

La fonction prend trois arguments:

  1. L'adresse de la ressource.
  2. Le type de contenu du corps à envoyer au serveur, une chaîne
  3. Le corps de demande de type IO.Lecteur

La fonction doit ensuite renvoyer la réponse et une erreur. Gardez à l'esprit que nous devons convertir les données pour envoyer au serveur en un format acceptable. Nous pouvons le faire en convertissant les données JSON en IO.Lecteur, qui est essentiellement une interface dans Go.

Vérifiez le code source pour en savoir plus.

Convertir les données JSON en IO.Le type de lecteur implique deux étapes:

La première consiste à coder les données JSON au format d'octet. Nous pouvons le faire par JSON Marshaling comme discuté dans notre tutoriel.

Une fois encodé, nous pouvons convertir les données en type comme implémenté par IO.Interface de lecteur à l'aide de la méthode NewBuffer. Cette méthode renvoie l'EI.Type de lecteur que nous pouvons ensuite transmettre à la méthode du post.

Un exemple de bloc de code est comme indiqué ci-dessous:

corps, _: = JSON.Marshal (map [String] String
"id": "1",
"site": "Linuxhint"
)
encodé_json: = octets.Newbuffer (corps)

Une fois que nous avons toutes les pièces dans l'ordre, nous pouvons invoquer la méthode postale à la ressource spécifiée. Gardez à l'esprit que ce tutoriel utilise des données et des liens factice.

package principal
importer (
"octets"
"Encodage / JSON"
"FMT"
"io / ioutil"
"enregistrer"
"net / http"
)
func main ()
corps, _: = JSON.Marshal (map [String] String
"id": "1",
"site": "Linuxhint"
)
resp, err: = http.Post ("Http: // Exemple.com / v4 / point final / post "," application / json ", corps)
Si err != nil
enregistrer.Fatal (euh)

différer respiration.Corps.Fermer()
return_body, err: = ioutil.Readall (resp.Corps)
Si err != nil
enregistrer.Fatal (euh)

fmt.Println (String (corps))

La méthode ci-dessus implémente un client HTTP simple qui peut faire des méthodes de post HTTP à une ressource spécifiée.

Conclusion

Cet article vous montre comment créer un client HTTP fondamental en utilisant le langage de programmation Go. GO est exceptionnellement rapide en ce qui concerne le service http. En utilisant les connaissances dans cet article, vous pouvez étendre le client à une application entièrement en détail.

Continuez à coder.