Menggunakan API RESTful Dengan Go

Menggunakan API RESTful Dengan Go

API RESTful ialah seni bina popular untuk pemindahan data merentas web. API RESTful biasanya menggunakan HTTP, menjadikannya sesuai untuk kes yang tidak mempunyai kewarganegaraan adalah penting.





cara mematikan mod terhad

Seperti mana-mana bahasa sebelah pelayan, anda boleh berinteraksi dengan protokol HTTP dan membuat permintaan HTTP dalam Go.





Bermula Menggunakan API RESTful dalam Go

The http pakej menyediakan kebanyakan fungsi yang anda perlukan untuk berinteraksi dengan protokol HTTP dalam Go. Ini termasuk membuat permintaan HTTP, dan anda tidak semestinya memerlukannya kebergantungan luaran, seperti Gin atau pangkalan data .





MAKEUSEOF VIDEO OF THE DAY

Anda boleh menggunakan http pakej untuk menggunakan API dan mengambil halaman mengikis web dalam Go .

Import pakej ini untuk mula membuat permintaan HTTP dalam Go.



import ( 
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)

Anda akan menggunakan bait pakej untuk memanipulasi kepingan bait, the json pakej untuk memformat data permintaan, the fmt pakej untuk menulis kepada output standard, the ioutil pakej untuk input dan output, dan http pakej untuk menghantar permintaan.

Permintaan GET Mudah dalam Go

tipikal DAPATKAN permintaan membaca data daripada pelayan dan mungkin menyediakan parameter untuk data bergantung pada sifat dan spesifikasi API.





Dalam tutorial ini, anda akan belajar cara menggunakan API RESTful menggunakan perkhidmatan permintaan dan tindak balas mudah httpbin.

Berikut ialah contoh membuat permintaan HTTP dengan Go:





url := "https://httpbin.org/get" 
response, err := http.Get(url)

if err != nil {
fmt.Printf("There was an error from the API request %s", err.Error())
} else {
// continues [1] ...
}

The url pembolehubah ialah titik akhir yang anda hantar permintaan. The Dapatkan kaedah mengambil dalam URL, melaksanakan Dapatkan permintaan, dan mengembalikan respons, termasuk pengepala dan kandungannya.

Anda boleh mengendalikan sebarang ralat daripada permintaan bergantung pada keperluan anda. Jika tiada ralat, anda boleh meneruskan untuk mengekstrak maklumat yang anda perlukan daripada Dapatkan permintaan.

} else { 
// ... [1] continued
responseData, err := ioutil.ReadAll(response.Body)

if err != nil {
fmt.Printf("There was an error from parsing the request body %s", err.Error())
} else {
// continues [2] ...
}
}

Tanggapan itu Badan medan memegang badan tindak balas. Menggunakan Baca Semua kaedah yang ioutil pakej, anda boleh membaca badan tindak balas dan mengendalikan kemungkinan ralat.

} else { 
// ... [2] continued
fmt.Println(string(responseData))
}

The lain pernyataan mencetak badan tindak balas ke konsol anda jika tiada ralat daripada operasi baca.

Berikut adalah hasil daripada DAPATKAN permintaan ke titik akhir httpbin.

  hasil daripada permintaan GET

Permintaan POST Mudah dalam Go

Permintaan POST biasa memberikan muatan data kepada pelayan, dan pelayan mengembalikan respons bergantung pada operasi.

Berikut ialah struct mudah untuk mengekodkan muatan JSON ke pelayan sebagai sebahagian daripada permintaan POST.

type JSON struct { 
info string
message string
}

The JSON struct mempunyai info dan mesej medan rentetan, dan anda akan memulakan contoh struct untuk permintaan itu.

url := "https://httpbin.org/post" 

jsonInstance := JSON {
info: "expecting success",
message: "the request should return ",
}

The url pembolehubah menyimpan titik akhir permintaan POST daripada laman web httpbin. The jsonInstance pembolehubah ialah contoh struct JSON yang anda boleh gunakan untuk menyimpan dan menghantar data berstruktur.

Anda boleh menggunakan Marshal kaedah daripada json pakej untuk memformat JSON untuk permintaan itu.

jsonData, err := json.Marshal(jsonInstance) 
if err != nil {
fmt.Println("there was an error with the JSON", err.Error())
} else {
// continues [1] ...
}

The Marshal kaedah juga mengembalikan ralat yang anda boleh kendalikan. Jika tiada ralat dengan operasi pengkaji JSON, anda boleh meneruskan untuk membuat permintaan POST.

Anda boleh menggunakan Pos kaedah untuk membuat permintaan POST. The Pos kaedah mengambil titik akhir URL, jenis kandungan permintaan dan penimbal muatan. Ia mengembalikan respons dan ralat.

komputer ini tidak mengaktifkan vt-x / amd-v
} else { 
// ... continued [1]
response, err := http.Post(url, "application/json", bytes.NewBuffer(jsonData))

if err != nil {
fmt.Println("there was an error with the request", err.Error())
} else {
// continues [2] ...
}
}

Sekali lagi, anda boleh membaca badan tindak balas menggunakan Baca Semua kaedah yang ioutil pakej:

} else { 
// ... continued [2]
data, err := ioutil.ReadAll(response.Body)

if err != nil {
fmt.Println("there was an error reading the request body", err.Error())
} else {
fmt.Println(string(data))
}
}

The Println pernyataan mengeluarkan hasil permintaan HTTP ke konsol anda.

Sebagai dokumentasi httpbin menentukan, titik akhir POST ini mengembalikan data permintaan yang anda hantar.

  hasil daripada permintaan POST

Membina Apl Web dalam Go Adalah Mudah

Anda boleh membina aplikasi web dengan pelbagai fungsi dalam Go tanpa kebergantungan.

The http pakej mempunyai fungsi yang anda perlukan untuk kebanyakan operasi anda. Anda boleh menggunakan pakej ini dengan orang lain seperti json pakej untuk operasi JSON, the konteks pakej untuk isyarat, dan pakej templat untuk templat. Terdapat banyak pakej lain dalam perpustakaan standard.