Kā lietot GraphQL API galapunktus Go

Kā lietot GraphQL API galapunktus Go

Graph Query Language (GraphQL) ir valoda un specifikācija mijiedarbībai ar GraphQL API — uz HTTP balstītu klienta-servera arhitektūru saziņai tīmeklī.





Facebook izlaida GraphQL kā alternatīvu REST arhitektūras standartam. GraphQL risina lielāko daļu problēmu ar REST bezvalsts un kešatmiņas veidā. Tā nodrošina vienkāršu un intuitīvu sintaksi, kas apraksta paredzamo(-s) izvadi(-es) vai ievadi(-es), un API pārraida pieprasījumam atbilstošus datus.





DIENAS VIDEO MAKEUSEOF

Tā kā GraphQL ir specifikācija, varat izveidot un izmantot GraphQL API jebkurā servera puses programmēšanas valodā, tostarp Go.





Darba sākšana ar GraphQL API pakalpojumā Go

GraphQL pamatā ir HTTP arhitektūra , un Go nodrošina iebūvēto HTTP funkcionalitāti http iepakojums.

Jūs varat izmantot http iepakojums uz patērē RESTful API pakalpojumā Go , starp citām funkcijām. GraphQL varat veikt vaicājumus un mutācijas GraphQL API serveriem, izmantojot http pakete un citi iebūvētie iepakojumi.



pārvietot lietotnes uz SD karti android
  Pārskata sadaļa Go HTTP pakotnē

GraphQL klientu pakotnes, piemēram Mašīnu kastes vai shurCoL's padariet mijiedarbības procesu ar GraphQL API vēl vienkāršāku.

Jūs varat izmantot http pakotni bez jebkādām atkarībām, lai mijiedarbotos ar GraphQL API. Lai sāktu, importējiet šīs pakotnes savā Go failā:





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

Jūs izmantosit baiti pakotni, lai izveidotu jaunu pieprasījuma buferi un json pakotni, lai nosūtītu karti JSON pieprasījuma struktūrai. Tu vari izmantot ioutil lai izlasītu atbildes pamattekstu un laiks paketi, lai noteiktu pieprasījuma termiņu.

GraphQL API vaicājumi, izmantojot Go

Ir daudz bezmaksas publisko GraphQL API, ko varat meklēt un integrēt savās lietojumprogrammās. Šajā rakstā jūs vaicāsit Apollo GraphQL valstu API, lai vaicātu datus par valstīm visā pasaulē.





Visas GraphQL darbības parasti ir POST pieprasījumi, jo tām ir jābūt lietderīgajai slodzei (pieprasījuma pamattekstam). Lielākā daļa GraphQL API pieņem JSON pieprasījuma pamattekstu kā satura veidu un Go nodrošina funkcionalitāti karšu un struktūru izmantošanai darbam ar JSON .

Lai vaicātu API, jums būs jāizpēta GraphQL shēmas struktūra. Vaicājums būs tāds pats kā parasts GraphQL vaicājums, izņemot to, ka darbība (vaicājums vai mutācija) ir atslēga, un dati ir kartes vērtība.

Tālāk ir norādīts, kā varat deklarēt JSON kartes instanci, ko pieprasījumam pārveidosiet par JSON.

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

The jsonMapInstance mainīgais ir pieprasījuma pamatteksta kartes gadījums. Vērtība ir vaicājuma datu virkne, ko sagaidāt no API. Šajā gadījumā vaicājuma dati, ko sagaidāt no API valstīm shēmas ir nosaukums , tālrunis , valūta , kodu , un emocijzīmes lauki.

Jūs varat izmantot maršals metode json pakotni, lai kodētu kartes gadījumu uz JSON. The maršals metode atgriež kodētu JSON un kļūdu gadījumos, kad ir kodēšanas problēma.

jsonResult, err := json.Marshal(jsonMapInstance) 

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

Kad esat iekodējis karti JSON, varat nosūtīt POST pieprasījumu API. Varat izveidot jaunu pieprasījuma gadījumu, izmantojot NewRequest metode, kas ņem pieprasījuma veidu, URL un JSON buferi.

The NewRequest metode atgriež pieprasījuma gadījumu. Jums būs jāiestata satura veids atkarībā no API specifikācijām. Varat iestatīt HTTP pieprasījumu satura veidu, izmantojot Iestatīt metode Virsraksts jūsu pieprasījuma instances metode.

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

Varat izveidot vienkāršu HTTP klientu savam pieprasījumam, izmantojot Klients HTTP pakotnes metode. The Klients metode ļauj arī iestatīt laika ierobežojumu jūsu pieprasījumam ar laiks iepakojums.

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

Kad esat deklarējis HTTP klientu, izpildiet savu API pieprasījumu ar Dariet metodi. The Dariet metode pieņem pieprasījuma gadījumu un atgriež atbildi un kļūdu.

Jūs varat izlasīt atbildi uz API pieprasījumu, izmantojot ioutil iepakojums Lasīt visu metodi. Tas uzņem izvades straumi un atgriež datu baitu daļu ar kļūdu, kuru varat apstrādāt.

visbriesmīgākie video internetā
responseData, err := ioutil.ReadAll(response.Body) 

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

Izmantojot iebūvēto virknes funkciju, varat konvertēt baitu slāņa atbildi uz virknes veidu.

fmt.Println(string(responseData)) 

Šeit ir atbilde, kurā parādīts API pieprasījuma rezultāts:

  GraphQL API vaicājuma izvade parāda valstu sarakstu un to pieprasītos laukus.

RESTful API izmantošana ir kā GraphQL API patērēšana

Tā kā gan REST, gan GraphQL API izmanto HTTP protokolu, katra izmantošana ir ļoti līdzīgs process, un jūs varat izmantot http komplekts abiem gadījumiem.

Jums būs jāizveido klienti, jāpieprasa gadījumi un jālasa dati ar tām pašām pakotnēm.