Maison >développement back-end >Golang >Comment utiliser la bibliothèque standard pour lancer des requêtes HTTP en langage Go

Comment utiliser la bibliothèque standard pour lancer des requêtes HTTP en langage Go

PHPz
PHPzoriginal
2023-03-22 13:49:171641parcourir

Le langage Go (Golang) est un langage de programmation efficace développé par Google, particulièrement adapté à la programmation réseau et à la programmation système. Dans les applications Web, l'envoi de requêtes HTTP est une opération très courante. Cet article explique comment utiliser la bibliothèque standard pour lancer des requêtes HTTP dans le langage Go.

  1. Structure de base de la requête HTTP

Avant de lancer une requête HTTP, vous devez d'abord comprendre les différentes parties de la requête HTTP.

La requête HTTP se compose de trois parties : la ligne de requête, l'en-tête de la requête et le corps de la requête.

La ligne de requête contient la méthode demandée, l'URL et la version du protocole, par exemple :

GET /api/users HTTP/1.1

L'en-tête de la requête contient les métadonnées de la requête HTTP, par exemple :

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8

Le corps de la requête contient les données à soumettre par l'application , par exemple :

{"username":"admin","password":"123456"}
  1. Utilisez la bibliothèque standard pour lancer une requête HTTP GET

Ce qui suit est un exemple d'utilisation de la bibliothèque standard pour lancer une requête HTTP GET :

package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
)

func main() {
    resp, err := http.Get("https://www.example.com")
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        panic(err)
    }

    fmt.Println(string(body))
}

Dans l'exemple ci-dessus, nous utilisons la fonction http.Get pour lancer une requête HTTP GET. Cette fonction renvoie une structure de type http.Response, qui contient différentes parties de la réponse HTTP. Nous utilisons la fonction ioutil.ReadAll pour lire le contenu du corps de la réponse et l'afficher sur la console. http.Get函数发起了一个HTTP GET请求。该函数返回一个http.Response类型的结构体,其中包含了HTTP响应的各个部分。我们使用ioutil.ReadAll函数读取响应体的内容,并将其输出到控制台。

  1. 使用标准库发起HTTP POST请求

除了HTTP GET请求,我们还可以使用标准库发起HTTP POST请求。下面是一个使用标准库发起HTTP POST请求的示例:

package main

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

func main() {
    url := "http://www.example.com/api/login"
    data := []byte(`{"username":"admin","password":"123456"}`)
    req, err := http.NewRequest("POST", url, bytes.NewBuffer(data))
    if err != nil {
        panic(err)
    }
    req.Header.Set("Content-Type", "application/json")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        panic(err)
    }

    fmt.Println(string(body))
}

在上面的示例中,我们使用http.NewRequest函数创建了一个HTTP请求。我们指定了请求的方法为POST,URL为http://www.example.com/api/login,并将请求体设置为{"username":"admin","password":"123456"}。我们还设置了请求头的Content-Type为application/json。最后,我们使用client.Do方法执行HTTP POST请求,并读取响应体的内容。

  1. 使用第三方库发起HTTP请求

除了标准库,我们还可以使用第三方库发起HTTP请求。下面是一个使用第三方库github.com/go-resty/resty发起HTTP GET请求的示例:

package main

import (
    "fmt"
    "github.com/go-resty/resty/v2"
)

func main() {
    client := resty.New()

    resp, err := client.R().
        EnableTrace().
        Get("https://www.example.com")
    if err != nil {
        panic(err)
    }

    fmt.Println(string(resp.Body()))
}

在上面的示例中,我们使用了github.com/go-resty/resty库提供的Get方法发起HTTP GET请求。我们还使用了EnableTrace

      Utilisez la bibliothèque standard pour lancer une requête HTTP POST
    1. En plus de la requête HTTP GET, nous pouvons également utiliser la bibliothèque standard pour lancer une requête HTTP POST. Voici un exemple de réalisation d'une requête HTTP POST en utilisant la bibliothèque standard :
    rrreee

    Dans l'exemple ci-dessus, nous avons créé une requête HTTP en utilisant la fonction http.NewRequest. Nous avons spécifié la méthode de requête comme POST, l'URL comme http://www.example.com/api/login et défini le corps de la requête comme {"username": "admin", "mot de passe": "123456">. Nous définissons également le Content-Type de l’en-tête de la requête sur application/json. Enfin, nous utilisons la méthode client.Do pour effectuer une requête HTTP POST et lire le contenu du corps de la réponse.

      🎜🎜Utiliser des bibliothèques tierces pour lancer des requêtes HTTP🎜🎜🎜🎜En plus de la bibliothèque standard, nous pouvons également utiliser des bibliothèques tierces pour lancer des requêtes HTTP. Voici un exemple d'utilisation de la bibliothèque tierce github.com/go-resty/resty pour lancer une requête HTTP GET : 🎜rrreee🎜Dans l'exemple ci-dessus, nous avons utilisé github.com /go - La méthode <code>Get fournie par la bibliothèque resty/resty initie une requête HTTP GET. Nous avons également utilisé la méthode EnableTrace pour imprimer les détails de la requête HTTP. 🎜🎜🎜🎜Conclusion🎜🎜🎜🎜Grâce à l'introduction de cet article, nous avons appris à utiliser la bibliothèque standard ou la bibliothèque tierce pour lancer des requêtes HTTP dans le langage Go. Comprendre la structure de base et l'utilisation des requêtes HTTP est très important pour développer des applications Web. Dans le développement réel, nous devons également prendre en compte des problèmes tels que la sécurité et les performances des requêtes HTTP. 🎜

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