Com consumir els punts finals de l'API GraphQL a Go

Com consumir els punts finals de l'API GraphQL a Go

Graph Query Language (GraphQL) és un llenguatge i una especificació per interactuar amb les API GraphQL, una arquitectura client-servidor basada en HTTP per a la comunicació a través del web.





Facebook va llançar GraphQL com a alternativa a l'estàndard arquitectònic REST. GraphQL aborda la majoria dels problemes amb REST d'una manera sense estat i en memòria cau. Proporciona una sintaxi senzilla i intuïtiva que descriu les sortides o entrades esperades, i l'API transmet les dades que coincideixen amb la sol·licitud.





MAKEUSEO VÍDEO DEL DIA

Com que GraphQL és una especificació, podeu crear i consumir API de GraphQL en qualsevol llenguatge de programació del servidor, inclòs Go.





Com començar amb les API GraphQL a Go

GraphQL es basa en l'arquitectura HTTP , i Go ofereix la funcionalitat HTTP integrada http paquet.

Podeu utilitzar el http paquet a consumeix API RESTful a Go , entre altres característiques. Per a GraphQL, podeu fer consultes i mutacions als servidors de les API de GraphQL amb el http paquet i altres paquets integrats.



  secció de visió general del paquet Go HTTP

Paquets de client GraphQL com Machinebox's o shurCooL's faciliteu encara més el procés d'interacció amb les API de GraphQL.

Podeu utilitzar el http paquet sense cap dependència per interactuar amb una API GraphQL. Importeu aquests paquets al vostre fitxer Go per començar:





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

Fareu servir el bytes paquet per crear un nou buffer per a la sol·licitud i el json paquet per agrupar un mapa al cos de la sol·licitud JSON. Pots fer servir ioutil per llegir el cos de resposta i el temps paquet per establir un límit de temps per a la sol·licitud.

Consulta de les API de GraphQL amb Go

Hi ha moltes API GraphQL públiques gratuïtes que podeu consultar i integrar a les vostres aplicacions. Per a aquest article, consultareu l'API de països d'Apollo GraphQL per consultar dades de països d'arreu del món.





Totes les operacions de GraphQL solen ser sol·licituds POST, ja que han de tenir una càrrega útil (cos de la sol·licitud). La majoria de les API de GraphQL accepten el cos de la sol·licitud JSON com a tipus de contingut i Go proporciona funcionalitat per utilitzar mapes i estructures per treballar amb JSON .

data i hora de Windows 10 incorrectes

Haureu d'estudiar l'estructura de l'esquema GraphQL per consultar l'API. La consulta serà la mateixa que una consulta GraphQL normal, excepte que l'operació (consulta o mutació) és la clau i les dades són el valor del mapa.

A continuació s'explica com podeu declarar una instància de mapa JSON que agrupareu a JSON per a la sol·licitud.

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

El jsonMapInstance variable és la instància del mapa per al cos de la sol·licitud. El valor és una cadena de les dades de consulta que espereu de l'API. En aquest cas, les dades de consulta que espereu de l'API països l'esquema són els nom , telèfon , moneda , codi , i emoji camps.

Podeu utilitzar el Mariscal mètode de la json paquet per codificar la instància del mapa en JSON. El Mariscal El mètode retorna el JSON codificat i un error per als casos amb un problema de codificació.

mireu pel·lícules noves en línia de forma gratuïta sense descarregar ni registrar-vos
jsonResult, err := json.Marshal(jsonMapInstance) 

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

Un cop hàgiu codificat el mapa a JSON, podeu enviar la sol·licitud POST a l'API. Podeu crear una nova instància de sol·licitud amb el Nova sol·licitud mètode, que inclou el tipus de sol·licitud, l'URL i la memòria intermèdia JSON.

El Nova sol·licitud El mètode retorna una instància de sol·licitud. Haureu d'establir el tipus de contingut en funció de les especificacions de l'API. Podeu establir el tipus de contingut per a les sol·licituds HTTP amb el Conjunt mètode de la Capçalera mètode de la vostra instància de sol·licitud.

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

Podeu crear un client HTTP senzill per a la vostra sol·licitud amb el Client mètode del paquet HTTP. El Client El mètode també us permet establir un límit de temps per a la vostra sol·licitud amb el temps paquet.

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

Després d'haver declarat el client HTTP, executeu la vostra sol·licitud d'API amb el Fes mètode. El Fes El mètode accepta la instància de sol·licitud i retorna la resposta i un error.

Podeu llegir la resposta de la sol·licitud de l'API amb el ioutil paquets Llegeix-ho tot mètode. Pren un flux de sortida i retorna una porció de bytes de les dades amb un error que podeu gestionar.

responseData, err := ioutil.ReadAll(response.Body) 

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

Amb la funció de cadena integrada, podeu convertir la resposta del segment de bytes al tipus de cadena.

fmt.Println(string(responseData)) 

Aquí hi ha una resposta que mostra el resultat de la sol·licitud de l'API:

  La sortida d'una consulta de l'API de GraphQL mostra una llista de països i els seus camps sol·licitats.

Consumir API RESTful és com consumir API GraphQL

Com que les API REST i GraphQL utilitzen el protocol HTTP, consumir cadascuna és un procés molt similar i podeu utilitzar el http paquet per als dos casos.

Haureu de crear clients, sol·licitar instàncies i llegir les dades amb els mateixos paquets.