Cara Mengkonsumsi Titik Akhir GraphQL API di Go

Cara Mengkonsumsi Titik Akhir GraphQL API di Go

Graph Query Language (GraphQL) adalah bahasa dan spesifikasi untuk berinteraksi dengan GraphQL API, 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 stateless dan cacheable. Ini menyediakan sintaks sederhana dan intuitif yang menjelaskan keluaran atau masukan yang diharapkan, dan API merelai data yang cocok dengan permintaan.





VIDEO MAKEUSEOF HARI INI

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





Memulai Dengan GraphQL API 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 GraphQL API dengan http paket dan paket bawaan lainnya.



  bagian ikhtisar dari paket Go HTTP

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

windows 10 tidak akan bangun dari tidur

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





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

Anda akan menggunakan byte paket untuk membuat buffer baru untuk permintaan dan json package untuk menyusun peta ke badan permintaan JSON. Kamu dapat memakai tidak berguna untuk membaca isi tanggapan, dan waktu paket untuk menetapkan batas waktu permintaan.

Membuat Kueri GraphQL API 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 tentang negara-negara di seluruh dunia.





Semua operasi GraphQL biasanya merupakan permintaan POST karena harus memiliki muatan (badan permintaan). Sebagian besar GraphQL API 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 mengkueri 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 susun ke dalam JSON untuk permintaan tersebut.

jsonMapInstance := map[string]string { 
"query": `
{
countries {
name,
phone,
currency,
code,
emoji
}
}
`,
}

Itu jsonMapInstance variabel adalah instance peta untuk badan 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.

cara mengembalikan pesan yang dihapus di fb

Anda dapat menggunakan Marsekal metode json package 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) 

if err != nil {
fmt.Printf("There was an error marshaling the JSON instance %v", err)
}

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

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

newRequest, err := http.NewRequest("POST", "https://countries.trevorblades.com/graphql", bytes.NewBuffer(jsonResult)) 
newRequest.Header.Set("Content-Type", "application/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.

apakah Anda harus berusia 18 tahun untuk menggunakan paypal?
 
client := &http.Client{Timeout: time.Second * 5}
response, err := client.Do(newRequest)

if err != nil {
fmt.Printf("There was an error executing the request%v", err)
}

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

Anda dapat membaca respons permintaan API dengan tidak berguna paket Baca semua metode. Dibutuhkan dalam aliran output dan mengembalikan sepotong byte data dengan kesalahan yang dapat Anda tangani.

responseData, err := ioutil.ReadAll(response.Body) 

if err != nil {
fmt.Printf("Data Read Error%v", err)
}

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

fmt.Println(string(responseData)) 

Berikut adalah respons yang menunjukkan hasil permintaan API:

  Output dari kueri GraphQL API menunjukkan daftar negara dan bidang yang diminta.

Mengkonsumsi RESTful APIs Seperti Mengkonsumsi GraphQL API

Karena REST dan GraphQL API 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.