Graph Query Language (GraphQL) yra kalba ir specifikacija, skirta sąveikai su GraphQL API – HTTP pagrindu sukurta kliento ir serverio architektūra, skirta komunikacijai visame žiniatinklyje.

„Facebook“ išleido „GraphQL“ kaip alternatyvą REST architektūros standartui. GraphQL sprendžia daugumą problemų su REST be būsenos ir talpyklos būdu. Jame pateikiama paprasta ir intuityvi sintaksė, apibūdinanti numatomą išvestį (-es) arba įvestį (-es), o API perduoda užklausą atitinkančius duomenis.

Kadangi GraphQL yra specifikacija, galite kurti ir naudoti GraphQL API bet kuria serverio programavimo kalba, įskaitant Go.

Darbo su GraphQL API „Go“ pradžia

GraphQL yra pagrįsta HTTP architektūrao „Go“ teikia integruotą HTTP funkciją http paketą.

Galite naudoti http paketą į naudoti RESTful API Go, be kitų funkcijų. GraphQL galite pateikti užklausas ir atlikti mutacijas GraphQL API serveriuose naudodami http paketą ir kitus įmontuotus paketus.

GraphQL kliento paketai kaip Mašinų dėžės arba shurCoL's dar labiau palengvinti sąveikos su GraphQL API procesą.

instagram viewer

Galite naudoti http paketą be jokių priklausomybių, kad galėtumėte sąveikauti su GraphQL API. Norėdami pradėti, importuokite šiuos paketus į savo Go failą:

importuoti (
"baitai"
"kodavimas/json"
"fmt"
"io/ioutil"
"net/http"
"laikas"
)

Jūs naudosite baitų paketą, kad sukurtumėte naują buferį užklausai ir json paketą, kad žemėlapis būtų nukreiptas į JSON užklausos organą. Tu gali naudoti ioutil perskaityti atsakymo tekstą ir laikas paketą, kad nustatytų užklausos terminą.

GraphQL API užklausa naudojant „Go“.

Yra daug nemokamų viešųjų „GraphQL“ API, kurių galite pateikti ir integruoti į savo programas. Šiame straipsnyje pateiksite užklausą Apollo GraphQL šalių API, kad užklaustumėte duomenis apie pasaulio šalis.

Visos GraphQL operacijos paprastai yra POST užklausos, nes jos turi turėti naudingą apkrovą (užklausos turinį). Dauguma GraphQL API priima JSON užklausos turinį kaip turinio tipą ir „Go“ suteikia funkcijų, leidžiančių naudoti žemėlapius ir struktūras darbui su JSON.

Norėdami pateikti API užklausą, turėsite išstudijuoti GraphQL schemos struktūrą. Užklausa bus tokia pati kaip įprasta GraphQL užklausa, išskyrus tai, kad operacija (užklausa arba mutacija) yra raktas, o duomenys yra žemėlapio reikšmė.

Štai kaip galite paskelbti JSON žemėlapio egzempliorių, kurį įtrauksite į JSON užklausai.

jsonMapInstance := žemėlapį[styga]styga {
"užklausa": `
{
šalys {
vardas,
telefonas,
valiuta,
kodas,
jaustukas
}
}
`,
}

The jsonMapInstance kintamasis yra užklausos turinio žemėlapio pavyzdys. Vertė yra užklausos duomenų, kurių tikitės iš API, eilutė. Šiuo atveju užklausos duomenys, kurių tikitės iš API šalyse schema yra vardas, telefonas, valiuta, kodas, ir jaustukas laukai.

Galite naudoti maršalas metodas json paketą, kad koduotų žemėlapio egzempliorių į JSON. The maršalas metodas grąžina užkoduotą JSON ir klaidą tais atvejais, kai kyla kodavimo problema.

jsonResult, err := json. „Marshal“ („jsonMapInstance“)

jeigu klysta! = nulis {
fmt. Printf ("Tvarkant JSON egzempliorių %v įvyko klaida", klaida)
}

Kai užkoduosite žemėlapį į JSON, galite nusiųsti POST užklausą į API. Galite sukurti naują užklausos egzempliorių naudodami NewRequest metodas, kuris paima užklausos tipą, URL ir JSON buferį.

The NewRequest metodas grąžina užklausos egzempliorių. Turėsite nustatyti turinio tipą, atsižvelgdami į API specifikacijas. Galite nustatyti HTTP užklausų turinio tipą naudodami Nustatyti metodas Antraštė jūsų užklausos egzemplioriaus metodas.

newRequest, err := http. NewRequest("POST", "https://countries.trevorblades.com/graphql“, baitai. NewBuffer (jsonResult))
naujas Prašymas. Antraštė. Set ("Turinio tipas", "programa/json")

Galite sukurti paprastą HTTP klientą savo užklausai naudodami Klientas HTTP paketo metodas. The Klientas metodas taip pat leidžia nustatyti užklausos terminą su laikas paketą.


klientas := &http. Klientas{Laikas: laikas. Antra* 5}
atsakymas, klaida := klientas. Daryti (nauja užklausa)

jeigu klysta! = nulis {
fmt. Printf ("Įvyko klaida vykdant užklausą%v", klaida)
}

Kai paskelbsite HTTP klientą, vykdykite API užklausą naudodami Daryk metodas. The Daryk metodas priima užklausos egzempliorių ir grąžina atsakymą bei klaidą.

API užklausos atsakymą galite perskaityti naudodami ioutil paketai Skaityti viską metodas. Jis paima išvesties srautą ir grąžina baito duomenų dalį su klaida, kurią galite apdoroti.

responseData, err := ioutil. Skaityti viską (atsakymas. Kūnas)

jeigu klysta! = nulis {
fmt. Printf ("Duomenų skaitymo klaida%v", klaida)
}

Naudodami integruotą eilutės funkciją, galite konvertuoti baitų skilties atsaką į eilutės tipą.

fmt. Println(styga(atsakymo duomenys))

Štai atsakymas, kuriame rodomas API užklausos rezultatas:

RESTful API naudojimas yra kaip GraphQL API naudojimas

Kadangi tiek REST, tiek GraphQL API naudoja HTTP protokolą, jų naudojimas yra labai panašus procesas, todėl galite naudoti http paketas abiem atvejais.

Turėsite sukurti klientus, prašyti egzempliorių ir skaityti duomenis naudodami tuos pačius paketus.