Cum să consumați punctele finale API GraphQL în Go

Cum să consumați punctele finale API GraphQL în Go

Graph Query Language (GraphQL) este un limbaj și o specificație pentru interacțiunea cu API-urile GraphQL, o arhitectură client-server bazată pe HTTP pentru comunicarea pe web.





Facebook a lansat GraphQL ca alternativă la standardul arhitectural REST. GraphQL abordează majoritatea problemelor legate de REST într-o manieră fără stat și care poate fi stocată în cache. Oferă o sintaxă simplă și intuitivă care descrie ieșirile sau intrările așteptate, iar API-ul transmite datele care se potrivesc cu cererea.





REALIZAREA VIDEOCLIPULUI ZILEI

Deoarece GraphQL este o specificație, puteți construi și consuma API-uri GraphQL în orice limbaj de programare pe partea de server, inclusiv Go.





Noțiuni introductive cu API-urile GraphQL în Go

GraphQL se bazează pe arhitectura HTTP , și Go oferă funcționalitate HTTP în sistemul său încorporat http pachet.

de ce Xbox-ul meu se pornește singur

Puteți folosi http pachet la consumați API-uri RESTful în Go , printre alte caracteristici. Pentru GraphQL, puteți face interogări și mutații la serverele API-urilor GraphQL cu ajutorul http pachet și alte pachete încorporate.



  secțiunea de prezentare generală a pachetului Go HTTP

Pachetele client GraphQL cum ar fi Machinebox-uri sau shurCooL’s face procesul de interacțiune cu API-urile GraphQL și mai ușor.

Puteți folosi http pachet fără nicio dependență pentru a interacționa cu un API GraphQL. Importați aceste pachete în fișierul Go pentru a începe:





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

Veți folosi octeți pachet pentru a crea un nou buffer pentru cerere și json pachet pentru a trimite o hartă către corpul solicitării JSON. Poți să folosești ioutil pentru a citi corpul răspunsului și timp pachet pentru a stabili un termen limită pentru cerere.

Interogarea API-urilor GraphQL cu Go

Există multe API-uri GraphQL publice gratuite pe care le puteți interoga și integra în aplicațiile dvs. Pentru acest articol, veți interoga API-ul Țărilor Apollo GraphQL pentru a interoga date despre țări din întreaga lume.





Toate operațiunile GraphQL sunt de obicei solicitări POST, deoarece trebuie să aibă o sarcină utilă (corpul cererii). Majoritatea API-urilor GraphQL acceptă corpul solicitării JSON ca tip de conținut și Go oferă funcționalitate pentru utilizarea hărților și structurilor pentru a lucra cu JSON .

Va trebui să studiați structura schemei GraphQL pentru a interoga API-ul. Interogarea va fi aceeași cu o interogare GraphQL obișnuită, cu excepția faptului că operația (interogare sau mutație) este cheia, iar datele sunt valoarea hărții.

Iată cum puteți declara o instanță de hărți JSON pe care o veți trimite în JSON pentru cerere.

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

The jsonMapInstance variabila este instanța hărții pentru corpul cererii. Valoarea este un șir de date de interogare pe care le așteptați de la API. În acest caz, datele de interogare pe care le veți aștepta de la API-uri ţări schema sunt cele Nume , telefon , valută , cod , și emoji câmpuri.

Puteți folosi Mareșal metoda de json pachet pentru a codifica instanța hărții în JSON. The Mareșal metoda returnează JSON codificat și o eroare pentru cazurile cu o problemă de codificare.

iphone 7 plus camera din spate nu funcționează
jsonResult, err := json.Marshal(jsonMapInstance) 

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

După ce ați codificat harta în JSON, puteți trimite solicitarea POST către API. Puteți crea o nouă instanță de solicitare cu Cerere nouă metoda, care include tipul cererii, adresa URL și memoria tampon JSON.

The Cerere nouă metoda returnează o instanță de solicitare. Va trebui să setați tipul de conținut în funcție de specificațiile API-ului. Puteți seta tipul de conținut pentru solicitările HTTP cu ajutorul A stabilit metoda de Antet metoda cererii dumneavoastră.

newRequest, err := http.NewRequest("POST", "https://countries.trevorblades.com/graphql", bytes.NewBuffer(jsonResult)) 
newRequest.Header.Set("Content-Type", "application/json")

Puteți crea un client HTTP simplu pentru solicitarea dvs. cu Client metoda pachetului HTTP. The Client metoda vă permite, de asemenea, să setați o limită de timp pentru cererea dvs. cu timp pachet.

 
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)
}

După ce ați declarat clientul HTTP, executați solicitarea API cu Do metodă. The Do metoda acceptă instanța cererii și returnează răspunsul și o eroare.

sunetul nu funcționează pe Windows 10

Puteți citi răspunsul la cererea API cu ioutil pachetelor Citeste tot metodă. Preia un flux de ieșire și returnează o porțiune de octeți a datelor cu o eroare pe care o puteți gestiona.

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

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

Cu funcția de șir încorporată, puteți converti răspunsul la felul de octeți la tipul de șir.

fmt.Println(string(responseData)) 

Iată un răspuns care arată rezultatul solicitării API:

  Ieșirea dintr-o interogare API GraphQL arată o listă de țări și câmpurile solicitate ale acestora.

Consumul de API-uri RESTful este ca și cum consumați API-uri GraphQL

Deoarece ambele API-uri REST și GraphQL folosesc protocolul HTTP, consumarea fiecăruia este un proces foarte similar și puteți utiliza http pachet pentru ambele cazuri.

Va trebui să creați clienți, să solicitați instanțe și să citiți datele cu aceleași pachete.