Graph Query Language (GraphQL) adalah bahasa dan spesifikasi untuk berinteraksi dengan API GraphQL, arsitektur client-server berbasis HTTP untuk komunikasi di seluruh web.

Facebook merilis GraphQL sebagai alternatif dari standar arsitektur REST. GraphQL mengatasi sebagian besar masalah dengan REST dengan cara yang tidak memiliki kewarganegaraan dan dapat di-cache. Ini menyediakan sintaksis sederhana dan intuitif yang menggambarkan keluaran atau masukan yang diharapkan, dan API menyampaikan data yang cocok dengan permintaan.

Karena GraphQL adalah sebuah spesifikasi, Anda dapat membuat dan menggunakan API GraphQL dalam bahasa pemrograman sisi server apa pun, termasuk Go.

Memulai Dengan API GraphQL di Go

GraphQL didasarkan pada arsitektur HTTP, dan Go menyediakan fungsionalitas HTTP di dalamnya http kemasan.

Anda dapat menggunakan http paket ke konsumsi RESTful API di Go, di antara fitur lainnya. Untuk GraphQL, Anda dapat membuat kueri dan mutasi ke server API GraphQL dengan http paket dan paket bawaan lainnya.

instagram viewer

Paket klien GraphQL seperti Kotak mesin atau shurCooL’s membuat proses interaksi dengan API GraphQL menjadi lebih mudah.

Anda dapat menggunakan http paket tanpa ketergantungan apa pun untuk berinteraksi dengan API GraphQL. Impor paket-paket ini ke file Go Anda untuk memulai:

impor (
"byte"
"pengkodean/json"
"fmt"
"io/ioutil"
"net/http"
"waktu"
)

Anda akan menggunakan byte paket untuk membuat buffer baru untuk permintaan dan json paket untuk menyusun peta ke badan permintaan JSON. Anda dapat gunakan ioutil untuk membaca respon tubuh, dan waktu paket untuk menetapkan batas waktu permintaan.

Meminta API GraphQL Dengan Go

Ada banyak API GraphQL publik gratis yang dapat Anda kueri dan integrasikan ke dalam aplikasi Anda. Untuk artikel ini, Anda akan meminta API Negara Apollo GraphQL untuk meminta data di negara-negara di seluruh dunia.

Semua operasi GraphQL biasanya adalah permintaan POST karena harus memiliki payload (badan permintaan). Sebagian besar API GraphQL menerima badan permintaan JSON sebagai tipe konten, dan Go menyediakan fungsionalitas untuk menggunakan peta dan struct untuk bekerja dengan JSON.

Anda harus mempelajari struktur skema GraphQL untuk menanyakan API. Kueri akan sama dengan kueri GraphQL biasa kecuali bahwa operasi (kueri atau mutasi) adalah kuncinya, dan datanya adalah nilai peta.

Inilah cara Anda dapat mendeklarasikan instance peta JSON yang akan Anda masukkan ke dalam JSON untuk permintaan tersebut.

jsonMapInstance := peta[rangkaian]rangkaian {
"pertanyaan": `
{
negara {
nama,
telepon,
mata uang,
kode,
emoji
}
}
`,
}

Itu jsonMapInstance variabel adalah instance peta untuk isi permintaan. Nilainya adalah string data kueri yang Anda harapkan dari API. Dalam hal ini, data kueri yang Anda harapkan dari API negara skema adalah nama, telepon, mata uang, kode, Dan emoji bidang.

Anda dapat menggunakan Marsekal metode dari json paket untuk menyandikan instance peta ke JSON. Itu Marsekal metode mengembalikan JSON yang disandikan dan kesalahan untuk kasus dengan masalah penyandian.

jsonResult, err := json. Marshal (jsonMapInstance)

jika salah!= nol {
fmt. Printf("Terjadi kesalahan mengatur instance JSON %v", err)
}

Setelah Anda menyandikan peta ke JSON, Anda dapat mengirim permintaan POST ke API. Anda dapat membuat instance permintaan baru dengan Permintaan baru metode, yang menggunakan jenis permintaan, URL, dan buffer JSON.

Itu Permintaan baru metode mengembalikan instance permintaan. Anda harus menyetel tipe konten tergantung pada spesifikasi API. Anda dapat mengatur jenis konten untuk permintaan HTTP dengan Mengatur metode dari Tajuk metode instance permintaan Anda.

Permintaan baru, err := http. PermintaanBaru("POST", "https://countries.trevorblades.com/graphql", byte. Buffer Baru (jsonResult))
permintaan baru. Tajuk. Set("Tipe-Konten", "aplikasi/json")

Anda dapat membuat klien HTTP sederhana untuk permintaan Anda dengan Klien metode paket HTTP. Itu Klien metode juga memungkinkan Anda untuk menetapkan batas waktu untuk permintaan Anda dengan waktu kemasan.


klien := &http. Klien{Waktu habis: waktu. Kedua * 5}
tanggapan, err := klien. Lakukan (permintaan baru)

jika salah!= nol {
fmt. Printf("Terjadi kesalahan saat mengeksekusi permintaan%v", err)
}

Setelah Anda mendeklarasikan klien HTTP, jalankan permintaan API Anda dengan Melakukan metode. Itu Melakukan metode menerima instance permintaan dan mengembalikan respons dan kesalahan.

Anda dapat membaca respons permintaan API dengan ioutil paket Baca semua metode. Dibutuhkan aliran keluaran dan mengembalikan potongan byte data dengan kesalahan yang dapat Anda tangani.

responseData, err := ioutil. Baca Semua (respons. Tubuh)

jika salah!= nol {
fmt. Printf("Kesalahan Pembacaan Data%v", err)
}

Dengan fungsi string bawaan, Anda dapat mengonversi respons irisan byte ke tipe string.

fmt. Cetak(rangkaian(responData))

Inilah respons yang menunjukkan hasil permintaan API:

Mengkonsumsi RESTful API Seperti Mengkonsumsi GraphQL API

Karena API REST dan GraphQL menggunakan protokol HTTP, mengkonsumsi masing-masing adalah proses yang sangat mirip, dan Anda dapat menggunakan http paket untuk kedua kasus.

Anda harus membuat klien, meminta instance, dan membaca data dengan paket yang sama.