


Mari kita bincangkan tentang proses menggunakan bahasa Go untuk meminta API
Dalam pembangunan web moden, API telah menjadi bahagian yang sangat diperlukan. Untuk melengkapkan penghantaran data dan interaksi daripada klien ke pelayan, kami perlu menghantar dan menerima permintaan dan respons HTTP. Dalam artikel ini, kami akan menggunakan bahasa Go untuk melaksanakan proses meminta API.
Bahasa Go ialah bahasa pengaturcaraan sumber terbuka yang sangat sesuai untuk membina aplikasi web yang sangat serentak, berskala dan cekap. Dalam artikel ini, kami akan menggunakan pustaka standard bahasa Go atau pustaka pihak ketiga untuk meminta API dan memproses data respons.
Rujukan:
- https://golang.org/pkg/net/http/
- https://github.com/go-resty/ resty
- https://golang.org/pkg/encoding/json/
- https://github.com/bitly/go-simplejson
Fahami HTTP Minta
Sebelum memahami cara meminta API menggunakan bahasa Go, kita perlu memahami cara permintaan HTTP berfungsi. Permintaan HTTP biasanya terdiri daripada tiga bahagian: baris permintaan, pengepala permintaan dan isi permintaan.
Barisan permintaan termasuk kaedah yang diminta, URL dan versi HTTP. Di sini, kami biasanya menggunakan kaedah GET kerana ia adalah kaedah yang paling biasa digunakan.
Pengepala permintaan termasuk jenis metadata yang berbeza. Sebagai contoh, kami boleh menggunakan pengepala permintaan untuk menghantar maklumat seperti token kebenaran, ejen pengguna dan kuki.
Ibu permintaan biasanya mengandungi data yang dihantar ke pelayan. Walau bagaimanapun, apabila menggunakan permintaan GET, badan permintaan biasanya kosong.
Gunakan API permintaan perpustakaan standard Go
Pustaka standard bahasa Go termasuk pakej HTTP, yang menyediakan fungsi asas untuk menghantar permintaan HTTP dan memproses respons.
Berikut ialah contoh penggunaan pustaka standard bahasa Go untuk meminta API:
package main import ( "fmt" "net/http" ) func main() { resp, err := http.Get("https://jsonplaceholder.typicode.com/posts") if err != nil { fmt.Println("请求错误:", err) return } defer resp.Body.Close() fmt.Println("响应状态码:", resp.StatusCode) fmt.Println("响应头部:", resp.Header) }
Dalam contoh ini, kami menggunakan http.Get() untuk menghantar permintaan HTTP GET, menghantar alamat API yang diminta.
Jika permintaan berjaya, kita boleh membaca kandungan badan respons melalui resp.Body. Akhir sekali, kami menutup badan tindak balas menggunakan resp.Body.Close() untuk mengelakkan kebocoran sumber.
Dalam contoh ini, kami hanya mengeluarkan kod status dan maklumat pengepala respons. Jika kita ingin mengendalikan isi permintaan, kita perlu membaca kandungan respons.
Memproses data respons
Pustaka standard dalam bahasa Go menyokong pemprosesan berbilang badan respons. Sebagai contoh, kita boleh menggunakan pakej json untuk memproses respons dalam format JSON, menggunakan pakej xml untuk memproses respons dalam format XML, dsb. Jika respons yang dihantar oleh API tidak berada dalam salah satu daripada format data ini, kami boleh menggunakan pakej io untuk membaca badan respons.
Berikut ialah contoh menggunakan pustaka standard Go untuk memproses respons format JSON:
package main import ( "encoding/json" "fmt" "net/http" ) type Post struct { UserId int `json:"userId"` Id int `json:"id"` Title string `json:"title"` Body string `json:"body"` } func main() { resp, err := http.Get("https://jsonplaceholder.typicode.com/posts") if err != nil { fmt.Println("请求错误:", err) return } defer resp.Body.Close() var posts []Post err = json.NewDecoder(resp.Body).Decode(&posts) if err != nil { fmt.Println("解析错误:", err) return } for _, p := range posts { fmt.Println(p) } }
Dalam contoh ini, kami mentakrifkan struktur Post, yang sepadan dengan format JSON yang dikembalikan oleh API itu. Kami menggunakan pakej json untuk menghuraikan badan tindak balas dan menghuraikan JSON ke dalam struktur Post.
Perhatikan bahawa kami lulus parameter &posts kerana kaedah json.NewDecoder() memerlukan penuding kepada pembolehubah yang dihuraikan. Akhirnya, kami mencetak semua jawatan yang diminta.
Gunakan perpustakaan pihak ketiga untuk meminta API
Selain pustaka standard bahasa Go, terdapat juga beberapa perpustakaan pihak ketiga yang boleh memudahkan proses meminta API. Sebagai contoh, pustaka Resty boleh menjadikan API permintaan lebih mudah dan lebih mudah untuk digunakan.
Berikut ialah contoh menggunakan perpustakaan Resty untuk meminta API:
package main import ( "fmt" "github.com/go-resty/resty" ) type Post struct { UserId int `json:"userId"` Id int `json:"id"` Title string `json:"title"` Body string `json:"body"` } func main() { client := resty.New() resp, err := client.R().Get("https://jsonplaceholder.typicode.com/posts") if err != nil { fmt.Println("请求错误:", err) return } var posts []Post err = json.Unmarshal(resp.Body(), &posts) if err != nil { fmt.Println("解析错误:", err) return } for _, p := range posts { fmt.Println(p) } }
Dalam contoh ini, kami menggunakan perpustakaan Resty untuk menghantar permintaan, di mana klien.R() .Get() ialah Pintasan untuk menghantar permintaan GET. Kami menggunakan kaedah Unmarshal() untuk menghuraikan badan tindak balas dan menghuraikan JSON ke dalam struktur Post.
Tidak seperti perpustakaan standard Go, pustaka Resty juga menyokong fungsi seperti menambah pengepala permintaan, menghantar parameter, menetapkan proksi, dll., menjadikan permintaan API lebih fleksibel dan mudah.
Ringkasan
Dalam artikel ini, kami mempelajari cara menggunakan bahasa Go untuk menghantar permintaan API dan memproses data respons. Kami mempelajari tentang tiga komponen permintaan HTTP dan cara menggunakan pustaka standard bahasa Go dan pustaka Resty.
Sudah tentu, selain perpustakaan ini, terdapat banyak lagi perpustakaan pihak ketiga yang boleh digunakan. Melalui pembelajaran dan percubaan berterusan, kami boleh mencari perpustakaan dan alatan yang paling sesuai untuk projek semasa dan menggunakannya untuk meningkatkan kecekapan pembangunan dan kualiti kod.
Atas ialah kandungan terperinci Mari kita bincangkan tentang proses menggunakan bahasa Go untuk meminta API. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas





OpenSSL, sebagai perpustakaan sumber terbuka yang digunakan secara meluas dalam komunikasi yang selamat, menyediakan algoritma penyulitan, kunci dan fungsi pengurusan sijil. Walau bagaimanapun, terdapat beberapa kelemahan keselamatan yang diketahui dalam versi sejarahnya, yang sebahagiannya sangat berbahaya. Artikel ini akan memberi tumpuan kepada kelemahan umum dan langkah -langkah tindak balas untuk OpenSSL dalam sistem Debian. Debianopenssl yang dikenal pasti: OpenSSL telah mengalami beberapa kelemahan yang serius, seperti: Kerentanan Pendarahan Jantung (CVE-2014-0160): Kelemahan ini mempengaruhi OpenSSL 1.0.1 hingga 1.0.1f dan 1.0.2 hingga 1.0.2 versi beta. Penyerang boleh menggunakan kelemahan ini untuk maklumat sensitif baca yang tidak dibenarkan di pelayan, termasuk kunci penyulitan, dll.

Masalah Threading Giliran di GO Crawler Colly meneroka masalah menggunakan Perpustakaan Colly Crawler dalam bahasa Go, pemaju sering menghadapi masalah dengan benang dan permintaan beratur. � ...

Perpustakaan yang digunakan untuk operasi nombor terapung dalam bahasa Go memperkenalkan cara memastikan ketepatannya ...

Laluan Pembelajaran Backend: Perjalanan Eksplorasi dari Front-End ke Back-End sebagai pemula back-end yang berubah dari pembangunan front-end, anda sudah mempunyai asas Nodejs, ...

Perbezaan antara percetakan rentetan dalam bahasa Go: perbezaan kesan menggunakan fungsi println dan rentetan () sedang ...

Artikel ini memperkenalkan pelbagai kaedah dan alat untuk memantau pangkalan data PostgreSQL di bawah sistem Debian, membantu anda memahami pemantauan prestasi pangkalan data sepenuhnya. 1. Gunakan PostgreSQL untuk membina pemantauan PostgreSQL sendiri menyediakan pelbagai pandangan untuk pemantauan aktiviti pangkalan data: PG_STAT_ACTIVITY: Memaparkan aktiviti pangkalan data dalam masa nyata, termasuk sambungan, pertanyaan, urus niaga dan maklumat lain. PG_STAT_REPLITI: Memantau status replikasi, terutamanya sesuai untuk kluster replikasi aliran. PG_STAT_DATABASE: Menyediakan statistik pangkalan data, seperti saiz pangkalan data, masa komitmen/masa rollback transaksi dan petunjuk utama lain. 2. Gunakan alat analisis log pgbadg

Masalah menggunakan redisstream untuk melaksanakan beratur mesej dalam bahasa Go menggunakan bahasa Go dan redis ...

Di bawah rangka kerja beegoorm, bagaimana untuk menentukan pangkalan data yang berkaitan dengan model? Banyak projek beego memerlukan pelbagai pangkalan data untuk dikendalikan secara serentak. Semasa menggunakan beego ...
