Maison  >  Article  >  développement back-end  >  Comment faire une requête API dans Golang

Comment faire une requête API dans Golang

PHPz
PHPzoriginal
2023-03-31 10:26:131468parcourir

Golang est un langage de programmation relativement nouveau mais est devenu un choix privilégié parmi les développeurs. Les hautes performances et la concurrence de Golang en font un choix idéal lors du développement d'applications, en particulier lors de la création de services évolutifs. La requête API de Golang est une tâche de base. Cet article explique comment effectuer une requête API dans Golang.

Introduction

API est l'abréviation d'Application Programming Interface, et la requête API fait référence à l'opération consistant à utiliser des requêtes HTTP GET pour accéder aux points de terminaison de l'API afin d'obtenir des données. L'API Query est requise pour de nombreux services backend, qui fournissent généralement des données de réponse au format JSON ou XML.

Dans Golang, il existe plusieurs façons d'effectuer des requêtes API. L'utilisation du package net/http de la bibliothèque standard est l'une des méthodes les plus courantes. De plus, certains packages tiers peuvent être utilisés pour effectuer des requêtes API, telles que grequests, gorequest, httpclient et resty.

Requête API à l'aide du package net/http de la bibliothèque standard

L'exécution d'une requête API à l'aide du package net/http de la bibliothèque standard nécessite plusieurs étapes. Tout d’abord, vous devez créer un client http qui sera utilisé pour accéder au point de terminaison de l’API. Dans l'exemple suivant, nous utiliserons http.DefaultClient :

func main() {
    resp, err := http.DefaultClient.Get("https://jsonplaceholder.typicode.com/posts/1")
    if err != nil {
        log.Fatalln(err)
    }
    defer resp.Body.Close()

    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        log.Fatalln(err)
    }
    fmt.Println(string(body))
}

Dans cet exemple, nous utiliserons http.DefaultClient pour envoyer une requête GET qui accédera au point de terminaison de l'API spécifié. Nous utilisons la fonction ReadAll du package ioutil pour lire le corps de la réponse dans une chaîne, puis l'imprimer sur la console.

Vous pouvez également créer une requête personnalisée à l'aide de la fonction http.NewRequest, par exemple :

func main() {
    req, err := http.NewRequest("GET", "https://jsonplaceholder.typicode.com/posts/1", nil)
    if err != nil {
        log.Fatalln(err)
    }

    resp, err := http.DefaultClient.Do(req)
    if err != nil {
        log.Fatalln(err)
    }
    defer resp.Body.Close()

    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        log.Fatalln(err)
    }
    fmt.Println(string(body))
}

Dans cet exemple, nous utilisons http.NewRequest pour créer une requête GET personnalisée qui accédera au point de terminaison de l'API spécifié. Nous effectuons ensuite la requête à l'aide de la fonction http.DefaultClient.Do et traitons la réponse comme dans l'exemple précédent.

Utilisation de packages tiers pour les requêtes API

En plus des packages net/http de la bibliothèque standard, certains packages tiers peuvent être utilisés pour effectuer des requêtes API dans Golang. Voici quelques-uns des exemples les plus populaires :

  1. grequests
func main() {
    resp, err := grequests.Get("https://jsonplaceholder.typicode.com/posts/1", nil)
    if err != nil {
        log.Fatalln(err)
    }

    fmt.Println(resp.String())
}

Dans cet exemple, nous utilisons le package grequests pour envoyer une requête GET au point de terminaison de l'API spécifié et utilisons la méthode resp.String() pour convertir le corps de la réponse. dans une chaîne.

  1. gorequest
func main() {
    resp, _, errs := gorequest.New().Get("https://jsonplaceholder.typicode.com/posts/1").End()

    if errs != nil {
        log.Fatalln(errs)
    }

    fmt.Println(resp)
}

Dans cet exemple, nous utilisons le package gorequest pour envoyer une requête GET au point de terminaison de l'API spécifié et utilisons la variable resp pour gérer la réponse.

  1. httpclient
func main() {
    client := httpclient.Defaults(httpclient.Map{
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0",
    })
    resp, err := client.Get("https://jsonplaceholder.typicode.com/posts/1")

    if err != nil {
        log.Fatalln(err)
    }

    fmt.Println(resp)
}

Dans cet exemple, nous utilisons le package httpclient pour créer un client http personnalisé et l'utiliser pour envoyer des requêtes GET au point de terminaison de l'API spécifié. Nous utilisons la variable resp pour gérer la réponse.

  1. resty
func main() {
    client := resty.New()
    resp, err := client.R().Get("https://jsonplaceholder.typicode.com/posts/1")

    if err != nil {
        log.Fatalln(err)
    }

    fmt.Println(resp.String())
}

Dans cet exemple, nous utilisons le package resty pour créer un client http personnalisé et l'utiliser pour envoyer des requêtes GET au point de terminaison de l'API spécifié. Nous utilisons la fonction resp.String() pour convertir le corps de la réponse en chaîne.

Conclusion

Dans cet article, nous avons présenté comment effectuer des requêtes API dans Golang en utilisant le package net/http de la bibliothèque standard ou un package tiers. Pour la plupart des scénarios de requêtes API, le package net/http de la bibliothèque standard fonctionne assez bien, en particulier pour les requêtes GET simples. Si vous devez gérer des requêtes et des réponses plus complexes, vous pouvez essayer des packages tiers tels que grequests, gorequest, httpclient et resty.

L'utilisation de Golang pour les requêtes API peut vous aider à obtenir facilement des données à partir de services Web, et les hautes performances et la concurrence de Golang le rendent idéal pour gérer des données à grande échelle. En développement réel, vous pouvez choisir la méthode qui vous convient le mieux pour effectuer des requêtes API en fonction de vos besoins.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn