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.
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"}
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.
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.
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.
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!