Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan pustaka standard untuk memulakan permintaan HTTP dalam bahasa Go

Cara menggunakan pustaka standard untuk memulakan permintaan HTTP dalam bahasa Go

PHPz
PHPzasal
2023-03-22 13:49:171520semak imbas

Bahasa Go (Golang) ialah bahasa pengaturcaraan yang cekap dibangunkan oleh Google, terutamanya sesuai untuk pengaturcaraan rangkaian dan pengaturcaraan sistem. Dalam aplikasi web, menghantar permintaan HTTP adalah operasi yang sangat biasa. Artikel ini akan memperkenalkan cara menggunakan pustaka standard untuk memulakan permintaan HTTP dalam bahasa Go.

  1. Struktur asas permintaan HTTP

Sebelum memulakan permintaan HTTP, anda mesti terlebih dahulu memahami pelbagai bahagian permintaan HTTP.

Permintaan HTTP terdiri daripada tiga bahagian: baris permintaan, pengepala permintaan dan isi permintaan.

Baris permintaan mengandungi kaedah, URL dan versi protokol yang diminta, contohnya:

GET /api/users HTTP/1.1

Pengepala permintaan mengandungi metadata permintaan HTTP, contohnya:

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

Permintaan Badan mengandungi data yang akan diserahkan oleh aplikasi, contohnya:

{"username":"admin","password":"123456"}
  1. Gunakan perpustakaan standard untuk memulakan permintaan HTTP GET

Berikut ialah standard untuk digunakan Contoh perpustakaan yang memulakan permintaan 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))
}

Dalam contoh di atas, kami memulakan permintaan HTTP GET menggunakan fungsi http.Get . Fungsi ini mengembalikan struktur jenis http.Response, yang mengandungi pelbagai bahagian tindak balas HTTP. Kami menggunakan fungsi ioutil.ReadAll untuk membaca kandungan badan tindak balas dan mengeluarkannya ke konsol.

  1. Gunakan perpustakaan standard untuk memulakan permintaan HTTP POST

Selain permintaan HTTP GET, kami juga boleh menggunakan perpustakaan standard untuk memulakan permintaan HTTP POST. Berikut ialah contoh membuat permintaan HTTP POST menggunakan perpustakaan standard:

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))
}

Dalam contoh di atas, kami mencipta permintaan HTTP menggunakan fungsi http.NewRequest. Kami menentukan kaedah permintaan sebagai POST, URL sebagai http://www.example.com/api/login dan menetapkan badan permintaan sebagai {"username":"admin","password":"123456"}. Kami juga menetapkan Jenis Kandungan pengepala permintaan kepada application/json. Akhir sekali, kami menggunakan kaedah client.Do untuk melaksanakan permintaan HTTP POST dan membaca kandungan badan respons.

  1. Gunakan perpustakaan pihak ketiga untuk memulakan permintaan HTTP

Selain perpustakaan standard, kami juga boleh menggunakan perpustakaan pihak ketiga untuk memulakan Permintaan HTTP. Berikut ialah contoh menggunakan pustaka pihak ketiga github.com/go-resty/resty untuk memulakan permintaan 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()))
}

Dalam contoh di atas, kami menggunakan kaedah github.com/go-resty/resty yang disediakan oleh pustaka Get untuk memulakan permintaan HTTP GET. Kami juga menggunakan kaedah EnableTrace untuk mencetak butiran permintaan HTTP.

  1. Kesimpulan

Melalui pengenalan artikel ini, kami telah mempelajari cara menggunakan perpustakaan standard atau perpustakaan pihak ketiga untuk memulakan permintaan HTTP dalam bahasa Go. Memahami struktur asas dan penggunaan permintaan HTTP adalah sangat penting untuk membangunkan aplikasi web. Dalam pembangunan sebenar, kami juga perlu mempertimbangkan isu seperti keselamatan dan prestasi permintaan HTTP.

Atas ialah kandungan terperinci Cara menggunakan pustaka standard untuk memulakan permintaan HTTP dalam bahasa Go. 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