Graph Query Language (GraphQL) on kieli ja spesifikaatio vuorovaikutukseen GraphQL-sovellusliittymien kanssa. Se on HTTP-pohjainen asiakas-palvelin-arkkitehtuuri viestintään verkossa.

Facebook julkaisi GraphQL: n vaihtoehtona REST-arkkitehtuuristandardille. GraphQL ratkaisee suurimman osan REST-ongelmista tilattomalla ja välimuistiin tallennettavalla tavalla. Se tarjoaa yksinkertaisen ja intuitiivisen syntaksin, joka kuvaa odotetut tulosteet tai tulot, ja API välittää pyyntöä vastaavat tiedot.

Koska GraphQL on spesifikaatio, voit rakentaa ja käyttää GraphQL-sovellusliittymiä millä tahansa palvelinpuolen ohjelmointikielellä, mukaan lukien Go.

GraphQL-sovellusliittymien käytön aloittaminen Gossa

GraphQL perustuu HTTP-arkkitehtuuriin, ja Go tarjoaa HTTP-toiminnon sisäänrakennettuna http paketti.

Voit käyttää http paketti kohteeseen kuluttaa RESTful-sovellusliittymiä Gossa, muiden ominaisuuksien ohella. GraphQL: n osalta voit tehdä kyselyitä ja mutaatioita GraphQL-sovellusliittymien palvelimille http paketti ja muut sisäänrakennetut paketit.

GraphQL-asiakaspaketit, kuten Machineboxit tai shurCool's tehdä vuorovaikutuksesta GraphQL API: iden kanssa entistä helpompaa.

Voit käyttää http paketti ilman riippuvuuksia vuorovaikutukseen GraphQL API: n kanssa. Aloita tuomalla nämä paketit Go-tiedostoosi:

tuonti (
"tavua"
"koodaus/json"
"fmt"
"io/ioutil"
"net/http"
"aika"
)

Tulet käyttämään tavua paketti uuden puskurin luomiseksi pyynnölle ja json paketti, joka ohjaa kartan JSON-pyyntörungolle. Voit käyttää ioutil lukea vastauksen runko ja aika pakettia asettaaksesi pyynnölle aikarajan.

GraphQL-sovellusliittymien kyselyt Golla

Voit kysyä ja integroida sovelluksiisi monia ilmaisia ​​julkisia GraphQL-sovellusliittymiä. Tätä artikkelia varten teet kyselyn Apollo GraphQL: n Countries API: sta, jotta voit tehdä kyselyitä eri maiden maista.

Kaikki GraphQL-toiminnot ovat tyypillisesti POST-pyyntöjä, koska niillä on oltava hyötykuorma (pyyntörunko). Useimmat GraphQL-sovellusliittymät hyväksyvät JSON-pyynnön tekstiosan sisältötyypiksi ja Go tarjoaa toimintoja karttojen ja rakenteiden käyttämiseen JSON: n kanssa.

Sinun on tutkittava GraphQL-skeeman rakenne, jotta voit tehdä kyselyn API: lle. Kysely on sama kuin tavallinen GraphQL-kysely, paitsi että operaatio (kysely tai mutaatio) on avain ja data on kartan arvo.

Näin voit ilmoittaa JSON-kartat-esiintymän, jonka liität JSON-muodossa pyyntöä varten.

jsonMapInstance := kartta[merkkijono]merkkijono {
"kysely": `
{
maat {
nimi,
puhelin,
valuutta,
koodi,
emoji
}
}
`,
}

The jsonMapInstance muuttuja on pyynnön rungon karttaesiintymä. Arvo on merkkijono kyselytiedoista, joita odotat sovellusliittymältä. Tässä tapauksessa kyselytiedot, joita odotat API: lta maat skeema ovat nimi, puhelin, valuutta, koodi, ja emoji kentät.

Voit käyttää Marsalkka menetelmä json paketti, joka koodaa karttaesiintymän JSON-muotoon. The Marsalkka menetelmä palauttaa koodatun JSON: n ja virheilmoituksen tapauksissa, joissa on koodausongelma.

jsonResult, err := json. Marshal (jsonMapInstance)

jos virhe! = nolla {
fmt. Printf("JSON-ilmentymää %v järjestettäessä tapahtui virhe", virhe)
}

Kun olet koodannut kartan JSON-muotoon, voit lähettää POST-pyynnön API: lle. Voit luoda uuden pyyntöesiintymän komennolla NewRequest menetelmä, joka ottaa pyyntötyypin, URL-osoitteen ja JSON-puskurin.

The NewRequest menetelmä palauttaa pyyntöesiintymän. Sinun on määritettävä sisältötyyppi API: n määritysten mukaan. Voit määrittää HTTP-pyyntöjen sisältötyypin käyttämällä Aseta menetelmä Otsikko pyyntöesimerkkisi menetelmä.

newRequest, err := http. NewRequest("POST", "https://countries.trevorblades.com/graphql", tavua. NewBuffer (jsonResult))
uusi pyyntö. Otsikko. Set("Sisältötyyppi", "sovellus/json")

Voit luoda yksinkertaisen HTTP-asiakkaan pyyntöäsi varten Asiakas HTTP-paketin menetelmä. The Asiakas -menetelmän avulla voit myös asettaa aikarajan pyyntöllesi aika paketti.


asiakas := &http. Asiakas{Aikakatkaisu: aika. Toinen* 5}
vastaus, err := asiakas. Tee (uusi pyyntö)

jos virhe! = nolla {
fmt. Printf("Pyyntöä %v suoritettaessa tapahtui virhe", virhe)
}

Kun olet ilmoittanut HTTP-asiakkaan, suorita API-pyyntösi Tehdä menetelmä. The Tehdä menetelmä hyväksyy pyyntöesiintymän ja palauttaa vastauksen ja virheen.

Voit lukea vastauksen API-pyyntöön ioutil paketteja Lue kaikki menetelmä. Se vastaanottaa ulostulovirran ja palauttaa tavulohkon dataa virheellä, jonka voit käsitellä.

responseData, err := ioutil. Lue kaikki (vastaus. runko)

jos virhe! = nolla {
fmt. Printf("Tietojen lukuvirhe%v", err)
}

Sisäänrakennetun merkkijonotoiminnon avulla voit muuntaa tavuviipaleen vastauksen merkkijonotyypiksi.

fmt. Println(merkkijono(vastaustiedot))

Tässä on vastaus, joka näyttää API-pyynnön tuloksen:

RESTful-sovellusliittymien käyttäminen on kuin GraphQL-sovellusliittymien kuluttamista

Koska sekä REST että GraphQL API käyttävät HTTP-protokollaa, kummankin käyttäminen on hyvin samanlainen prosessi, ja voit käyttää http paketti molempiin tapauksiin.

Sinun on luotava asiakkaita, pyydettävä ilmentymiä ja luettava tiedot samoilla paketeilla.