GraphQL API végpontok felhasználása a Go-ban

GraphQL API végpontok felhasználása a Go-ban

A Graph Query Language (GraphQL) egy nyelv és specifikáció a GraphQL API-kkal való interakcióhoz, 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 bemenete(ke)t, és az API továbbítja a kérésnek megfelelő adatokat.





MAKEUSEOF A NAP VIDEÓJA

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.



hogyan kell menteni a könyvjelzőket a chrome -ban
  a Go HTTP csomag áttekintő szakasza

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 ( 
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"time"
)

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.

törölje a gyorsítótár partíciót, mit csinál

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

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

Az 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. Az 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) 

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

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.

Az 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", bytes.NewBuffer(jsonResult)) 
newRequest.Header.Set("Content-Type", "application/json")

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

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

Miután deklarálta a HTTP-klienst, hajtsa végre az API-kérést a Tedd módszer. Az 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.ReadAll(response.Body) 

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

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

hogyan láthatod a feliratkozókat a youtube -on
fmt.Println(string(responseData)) 

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

  A GraphQL API-lekérdezés kimenete megjeleníti az országok listáját és a kért mezőket.

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.