A Graph Query Language (GraphQL) egy nyelv és specifikáció a GraphQL API-kkal való interakcióhoz, amely egy HTTP-alapú kliens-szerver architektúra az interneten keresztüli kommunikációhoz.

A Facebook kiadta a GraphQL-t a REST építészeti szabvány alternatívájaként. A GraphQL a legtöbb REST problémát állapotmentesen és gyorsítótárazható módon oldja meg. Egyszerű és intuitív szintaxist biztosít, amely leírja a várt kimenet(eke)t vagy bemenet(eke)t, és az API továbbítja a kérésnek megfelelő adatokat.

Mivel a GraphQL egy specifikáció, a GraphQL API-kat bármilyen szerveroldali programozási nyelven létrehozhatja és felhasználhatja, beleértve a Go-t is.

Kezdő lépések a GraphQL API-kkal a Go-ban

A GraphQL HTTP architektúrán alapul, a Go pedig beépített HTTP-funkciót biztosít http csomag.

Használhatja a http csomaghoz RESTful API-kat használ a Go-ban, többek között. GraphQL esetén lekérdezéseket és mutációkat hajthat végre a GraphQL API-kiszolgálókon a következővel http csomag és egyéb beépített csomagok.

instagram viewer

GraphQL ügyfélcsomagok, mint pl A gépdobozok vagy shurCoL's még könnyebbé teheti a GraphQL API-kkal való interakció folyamatát.

Használhatja a http csomagot függőségek nélkül a GraphQL API-val való interakcióhoz. A kezdéshez importálja ezeket a csomagokat a Go fájlba:

import (
"bájt"
"kódolás/json"
"fmt"
"io/ioutil"
"net/http"
"idő"
)

Használja a bájtok csomag új puffer létrehozásához a kéréshez és a json csomagot, amely a térképet a JSON-kérelem törzséhez irányítja. Te tudod használni ioutil a választörzs elolvasásához, és a idő csomagot, hogy határidőt szabjon a kérésnek.

GraphQL API-k lekérdezése a Go segítségével

Számos ingyenes nyilvános GraphQL API létezik, amelyeket lekérdezhet és integrálhat alkalmazásaiba. Ebben a cikkben lekérdezheti az Apollo GraphQL Countries API-ját a világ országaira vonatkozó adatok lekérdezéséhez.

Minden GraphQL-művelet jellemzően POST-kérés, mivel rendelkeznie kell egy hasznos adattal (kérelemtörzs). A legtöbb GraphQL API elfogadja a JSON-kérelem törzsét tartalomtípusként, és A Go funkciókat biztosít a térképek és struktúrák használatához a JSON-val való együttműködéshez.

Az API lekérdezéséhez tanulmányoznia kell a GraphQL séma szerkezetét. A lekérdezés megegyezik egy normál GraphQL-lekérdezéssel, kivéve, hogy a művelet (lekérdezés vagy mutáció) a kulcs, az adatok pedig a térkép értéke.

Így deklarálhat egy JSON-leképezés-példányt, amelyet a kérelemhez JSON-ba rendez.

jsonMapInstance := térkép[húr]húr {
"lekérdezés": `
{
országok {
név,
telefon,
valuta,
kód,
emoji
}
}
`,
}

A jsonMapInstance változó a kérés törzsének leképezési példánya. Az érték az API-tól várt lekérdezési adatok karakterlánca. Ebben az esetben az API-któl várt lekérdezési adatok országok séma a név, telefon, valuta, kód, és emoji mezőket.

Használhatja a Marsall módszere a json csomagot a leképezési példány JSON-ba kódolásához. A Marsall metódus a kódolt JSON-t és egy hibát adja vissza kódolási problémával rendelkező esetekben.

jsonResult, err := json. Marshal (jsonMapInstance)

ha hiba! = nulla {
fmt. Printf("Hiba történt a %v JSON-példány rendezésekor", hiba)
}

Miután a térképet JSON-ba kódolta, elküldheti a POST-kérést az API-nak. Új kéréspéldányt hozhat létre a NewRequest metódust, amely beveszi a kérés típusát, az URL-t és a JSON-puffert.

A NewRequest metódus kéréspéldányt ad vissza. A tartalomtípust az API specifikációitól függően kell beállítani. A HTTP-kérések tartalomtípusát a következővel állíthatja be Készlet módszere a Fejléc a kéréspéldány módszere.

newRequest, err := http. NewRequest("POST", "https://countries.trevorblades.com/graphql", bájt. NewBuffer (jsonResult))
newRequest. Fejléc. Set("Content-Type", "application/json")

Létrehozhat egy egyszerű HTTP-klienst kéréséhez a Ügyfél a HTTP-csomag metódusa. A Ügyfél módszer azt is lehetővé teszi, hogy határidőt állítson be a kérésére a idő csomag.


kliens := &http. Ügyfél{Időtúllépés: idő. Második* 5}
válasz, err := kliens. Tedd (új kérés)

ha hiba! = nulla {
fmt. Printf("Hiba történt a %v kérés végrehajtása során", hiba)
}

Miután deklarálta a HTTP-klienst, hajtsa végre az API-kérést a Tedd módszer. A Tedd metódus elfogadja a kéréspéldányt, és visszaadja a választ és egy hibát.

Az API-kérés válaszát a ioutil csomagok Mindent olvas módszer. Bevesz egy kimeneti adatfolyamot, és visszaadja az adatok egy bájtos szeletét egy kezelhető hibával.

responseData, err := ioutil. Mindent olvas (válasz. Test)

ha hiba! = nulla {
fmt. Printf("Adatolvasási hiba%v", hiba)
}

A beépített karakterlánc-függvénnyel a bájtszelet-választ karakterlánctípusra konvertálhatja.

fmt. Println(húr(válaszadat))

Íme egy válasz, amely az API-kérés eredményét mutatja:

A RESTful API-k fogyasztása olyan, mint a GraphQL API-k fogyasztása

Mivel a REST és a GraphQL API is a HTTP protokollt használja, mindegyik felhasználása nagyon hasonló folyamat, és használhatja a http csomag mindkét esetre.

Klienseket kell létrehoznia, példányokat kell kérnie, és be kell olvasnia az adatokat ugyanazokkal a csomagokkal.