Bagaimana untuk melaksanakan permintaan GET di Golang

PHPz
Lepaskan: 2023-04-05 14:11:03
asal
2995 orang telah melayarinya

Golang ialah bahasa pengaturcaraan yang cekap, yang sangat mudah untuk pembangunan rangkaian berdasarkannya. Dalam komunikasi rangkaian, permintaan GET ialah kaedah permintaan yang paling biasa. Artikel ini akan memperkenalkan secara terperinci cara melaksanakan permintaan GET di Golang.

1. Permintaan GET di Golang

Di Golang, kami boleh menggunakan pakej net/http untuk menghantar permintaan GET. Pakej ini menyediakan jenis Klien yang boleh kami gunakan untuk menghantar permintaan HTTP.

Berikut ialah contoh kod untuk menghantar permintaan GET:

package main

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

func main() {
    url := "https://www.example.com"
    resp, err := http.Get(url)
    if err != nil {
        fmt.Println("get url error:", err)
        return
    }
    defer resp.Body.Close()

    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        fmt.Println("read body error:", err)
        return
    }

    fmt.Println(string(body))
}
Salin selepas log masuk

Mari kita analisa kod di atas langkah demi langkah:

  1. Pertama, kami mentakrifkan url variable , yang mewakili URL yang ingin kami minta.
  2. Gunakan kaedah http.Get untuk menghantar permintaan dan menetapkan hasil tindak balas kepada pembolehubah resp.
  3. Untuk ralat yang mungkin berlaku semasa menghantar permintaan HTTP, kami menggunakan pembolehubah ralat untuk menangkap.
  4. Sebelum fungsi kembali, gunakan pernyataan tangguh untuk menutup strim Badan respons.
  5. Baca kandungan daripada strim Badan tindak balas dan tetapkan hasilnya kepada pembolehubah badan.
  6. Akhir sekali, tukar Badan tindak balas kepada rentetan dan keluarkannya ke konsol.

2. Parameter permintaan GET

Selalunya, permintaan GET bukan sahaja perlu meminta URL, tetapi juga perlu membawa beberapa parameter permintaan. Di Golang, kita boleh menggunakan url.Values ​​​​untuk menyimpan parameter. Berikut ialah contoh kod:

package main

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

func main() {
    url := "https://www.example.com"
    params := url.Values{}
    params.Set("key1", "value1")
    params.Set("key2", "value2")

    urlWithParams := url + "?" + params.Encode()
    resp, err := http.Get(urlWithParams)
    if err != nil {
        fmt.Println("get url error:", err)
        return
    }
    defer resp.Body.Close()

    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        fmt.Println("read body error:", err)
        return
    }

    fmt.Println(string(body))
}
Salin selepas log masuk

Kami telah menambah bahagian berdasarkan kod asal:

  1. mentakrifkan url.Values ​​​​type variable bernama params.
  2. Gunakan kaedah params.Set untuk menetapkan dua parameter.
  3. Gunakan kaedah params.Encode untuk mengekod parameter ke dalam rentetan dan menggabungkannya ke dalam URL permintaan yang lengkap.

Dalam contoh di atas, kami menggunakan kaedah params.Set untuk membawa dua parameter untuk permintaan. Dalam pembangunan sebenar, kita boleh menetapkan lebih banyak parameter mengikut keperluan.

3. Sesuaikan pengepala permintaan

Kadangkala kita perlu menyesuaikan pengepala permintaan, yang boleh dicapai dengan menetapkan medan Pengepala struktur http.Request. Berikut ialah contoh:

package main

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

func main() {
    url := "https://www.example.com"
    req, _ := http.NewRequest("GET", url, nil)
    req.Header.Set("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")

    resp, err := http.DefaultClient.Do(req)
    if err != nil {
        fmt.Println("get url error:", err)
        return
    }
    defer resp.Body.Close()

    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        fmt.Println("read body error:", err)
        return
    }

    fmt.Println(string(body))
}
Salin selepas log masuk

Dalam contoh ini, kami menggunakan kaedah http.NewRequest untuk membuat permintaan dan menetapkan medan Pengepala bernama User-Agent. Kami juga menggunakan kaedah http.DefaultClient.Do, yang merupakan kaedah permintaan yang lebih fleksibel daripada http.Get, yang membolehkan kami menyesuaikan lebih banyak pilihan.

4. Ringkasan

Dalam artikel ini, kami menunjukkan cara menggunakan Golang untuk menghantar permintaan GET, dan juga menerangkan cara membawa parameter permintaan dan menetapkan pengepala Pengepala. Sudah tentu, ini jauh daripada semua kandungan menggunakan Golang untuk pengaturcaraan rangkaian Kami juga boleh menggunakan bahasa ini untuk permintaan POST, komunikasi WebSocket, pengaturcaraan Socket dan banyak lagi.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan permintaan GET di Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!