Maison  >  Article  >  développement back-end  >  requête http golang

requête http golang

王林
王林original
2023-05-27 13:16:391470parcourir

Le langage Go est un langage de programmation rapide, fiable et concis, populaire pour ses excellentes capacités de programmation simultanée et réseau. Lors de la programmation réseau, les requêtes HTTP font inévitablement partie du processus de développement du programme. Cet article explique comment effectuer des requêtes HTTP en langage Go.

1. Importation et package net/http

La requête et la réponse HTTP sont implémentées en langage Go via le package net/http. Importez le package :

import (
    "net/http"
)

2. Requête GET

Le code suivant montre comment utiliser http.Get() pour envoyer une requête GET :

resp, err := http.Get("https://www.google.com")
if err != nil {
    //处理错误
}
defer resp.Body.Close()

body, err := ioutil.ReadAll(resp.Body)
if err != nil {
    //处理错误
}

fmt.Println(string(body))

Lorsque ce code est exécuté, il sera envoyé à https://www .google.com GET et renvoie le code source HTML du site Web. La fonction Get() renvoie un pointeur de type *http.Response, qui contient toutes les informations de réponse HTTP (y compris le code d'état, les en-têtes de réponse, le corps de la réponse, etc.). Nous utilisons l'instruction defer pour garantir que le corps de la réponse est fermé au retour de la fonction.

3. Requête POST

Le code suivant montre comment utiliser la méthode http.Post() pour envoyer une requête POST :

values := map[string]string{
    "name":  "test",
    "email": "test@gmail.com",
}

data := url.Values{}
for key, value := range values {
    data.Set(key, value)
}

url := "https://example.com/api"
req, err := http.NewRequest("POST", url, strings.NewReader(data.Encode()))
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")

if err != nil {
    //处理错误
}

client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
    //处理错误
}
defer resp.Body.Close()

body, err := ioutil.ReadAll(resp.Body)
if err != nil {
    //处理错误
}

fmt.Println(string(body))

De cette façon, nous utilisons la fonction http.NewRequest() pour créer une requête POST, puis définissez l'en-tête et le corps de la demande. Lors de l'envoi d'une requête, nous utilisons l'objet htt.Client() et envoyons la requête à l'URL spécifiée. Une fois l'exécution du code terminée, quel que soit le succès ou l'échec, veillez à fermer http.Response.Body.

4. Requête PUT

Semblable à la requête POST, la requête PUT peut également être envoyée en utilisant http.NewRequest() en langage Go :

values := "{"name":"test","email":"test@gmail.com"}"
url := "https://example.com/api"
req, err := http.NewRequest("PUT", url, bytes.NewBuffer([]byte(values)))

if err != nil {
    //处理错误
}

client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
    //处理错误
}
defer resp.Body.Close()

body, err := ioutil.ReadAll(resp.Body)
if err != nil {
    //处理错误
}

fmt.Println(string(body))

La fonction bytes.NewBuffer() est utilisée ici pour convertir les valeurs des variables en un buffer et placez-le dans Request.Body.

5. Requête DELETE

Semblable à la requête GET, la requête DELETE peut également être envoyée en utilisant la fonction http.Get() :

url := "https://example.com/api?id=123"
req, err := http.NewRequest("DELETE", url, nil)

if err != nil {
    //处理错误
}

client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
    //处理错误
}
defer resp.Body.Close()

body, err := ioutil.ReadAll(resp.Body)
if err != nil {
    //处理错误
}

fmt.Println(string(body))

Le paramètre url contient ici l'ID de la ressource que nous souhaitons supprimer. Notez que lorsque des paramètres sont transmis à l'URL, le codage de l'URL est requis pour garantir que les valeurs des paramètres sont transmises correctement.

Conclusion

Les requêtes et réponses HTTP en langage Go sont implémentées via le package net/http. Cet article décrit comment utiliser ce package pour envoyer des requêtes GET, POST, PUT et DELETE, et explique comment gérer les résultats des réponses. HTTP est le fondement des applications Web modernes, et comprendre cela peut également vous aider à étendre votre application pour prendre en charge les requêtes et les réponses 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
Article précédent:golang citation évasionArticle suivant:golang citation évasion