Rumah  >  Artikel  >  pembangunan bahagian belakang  >  permintaan golang http

permintaan golang http

王林
王林asal
2023-05-27 13:16:391479semak imbas

Bahasa Go ialah bahasa pengaturcaraan yang pantas, boleh dipercayai dan padat yang digemari kerana keupayaan pengaturcaraan rangkaian dan konkurensi yang sangat baik. Apabila melakukan pengaturcaraan rangkaian, permintaan HTTP adalah bahagian yang tidak dapat dielakkan dalam proses pembangunan program. Artikel ini akan memperkenalkan cara membuat permintaan HTTP dalam bahasa Go.

1. Pakej Import dan net/http

Permintaan dan respons HTTP dilaksanakan dalam bahasa Go melalui pakej net/http. Import pakej:

import (
    "net/http"
)

2. GET permintaan

Kod berikut menunjukkan cara menggunakan http.Get() untuk menghantar permintaan 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))

Apabila menjalankan kod ini , Permintaan GET akan dihantar ke https://www.google.com dan kod sumber HTML tapak web akan dikembalikan. Fungsi Get() mengembalikan *http.Penunjuk jenis respons, yang mengandungi semua maklumat respons HTTP (termasuk kod status, pengepala respons, badan respons, dll.). Kami menggunakan pernyataan tangguh untuk memastikan badan tindak balas ditutup apabila fungsi kembali.

3. Permintaan POST

Kod berikut menunjukkan cara menggunakan kaedah http.Post() untuk menghantar permintaan 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))

Dengan cara ini, kami menggunakan http.NewRequest() berfungsi untuk membuat permintaan POST, kemudian tetapkan pengepala permintaan dan badan permintaan. Apabila menghantar permintaan kami menggunakan objek htt.Client() dan menghantar permintaan ke URL yang ditentukan. Apabila kod selesai dijalankan, tanpa mengira kejayaan atau kegagalan, pastikan anda menutup http.Response.Body.

4. Permintaan PUT

Serupa dengan permintaan POST, permintaan PUT juga boleh dihantar menggunakan http.NewRequest() dalam bahasa 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))

Bytes digunakan di sini () berfungsi untuk menukar nilai pembolehubah menjadi penimbal dan meletakkannya dalam Request.Body.

5. Permintaan PADAM

Serupa dengan permintaan GET, permintaan DELETE juga boleh dihantar dengan menggunakan fungsi 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))

Parameter url di sini sertakan ID sumber yang ingin kami padamkan. Ambil perhatian bahawa apabila parameter dihantar ke URL, pengekodan URL diperlukan untuk memastikan bahawa nilai parameter dihantar dengan betul.

Kesimpulan

Permintaan dan respons HTTP bahasa Go dilaksanakan melalui pakej net/http. Artikel ini menerangkan cara menggunakan pakej ini untuk menghantar permintaan GET, POST, PUT dan DELETE serta menerangkan cara mengendalikan hasil respons. HTTP ialah asas aplikasi web moden, dan memahami perkara ini juga boleh membantu memanjangkan aplikasi anda untuk menyokong permintaan dan respons HTTP.

Atas ialah kandungan terperinci permintaan golang http. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:golang kutipan melarikan diriArtikel seterusnya:golang kutipan melarikan diri