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!