Cómo consumir puntos finales de la API de GraphQL en Go

Cómo consumir puntos finales de la API de GraphQL en Go

Graph Query Language (GraphQL) es un lenguaje y una especificación para interactuar con las API de GraphQL, una arquitectura cliente-servidor basada en HTTP para la comunicación en la web.





¿Por qué mi espacio en disco es de 100?

Facebook lanzó GraphQL como una alternativa al estándar de arquitectura REST. GraphQL aborda la mayoría de los problemas con REST sin estado y con almacenamiento en caché. Proporciona una sintaxis simple e intuitiva que describe las salidas o entradas esperadas, y la API transmite los datos que coinciden con la solicitud.





MAKEUSEOF VÍDEO DEL DÍA

Dado que GraphQL es una especificación, puede crear y consumir las API de GraphQL en cualquier lenguaje de programación del lado del servidor, incluido Go.





Introducción a las API de GraphQL en Go

GraphQL se basa en la arquitectura HTTP , y Go proporciona funcionalidad HTTP en su http paquete.

Puedes usar el http paquete a consumir API RESTful en Go , entre otras características. Para GraphQL, puede realizar consultas y mutaciones a los servidores API de GraphQL con el http paquete y otros paquetes integrados.



  sección de descripción general del paquete Go HTTP

Paquetes de cliente de GraphQL como Caja de máquina o shurcool's facilita aún más el proceso de interacción con las API de GraphQL.

Puedes usar el http paquete sin dependencias para interactuar con una API de GraphQL. Importe estos paquetes en su archivo Go para comenzar:





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

Usarás el bytes paquete para crear un nuevo búfer para la solicitud y el json paquete para ordenar un mapa en el cuerpo de la solicitud JSON. Puedes usar ioutil para leer el cuerpo de la respuesta, y el tiempo paquete para establecer un límite de tiempo para la solicitud.

aplicaciones en las que puedes ver películas

Consulta de las API de GraphQL con Go

Hay muchas API de GraphQL públicas y gratuitas que puede consultar e integrar en sus aplicaciones. Para este artículo, consultará la API de países de Apollo GraphQL para consultar datos sobre países de todo el mundo.





Todas las operaciones de GraphQL suelen ser solicitudes POST, ya que deben tener una carga útil (cuerpo de solicitud). La mayoría de las API de GraphQL aceptan el cuerpo de la solicitud JSON como tipo de contenido y Go proporciona funcionalidad para usar mapas y estructuras para trabajar con JSON .

Deberá estudiar la estructura del esquema de GraphQL para consultar la API. La consulta será la misma que una consulta GraphQL normal, excepto que la operación (consulta o mutación) es la clave y los datos son el valor del mapa.

Así es como puede declarar una instancia de mapa JSON que clasificará en JSON para la solicitud.

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

los jsonMapInstance variable es la instancia del mapa para el cuerpo de la solicitud. El valor es una cadena de los datos de consulta que espera de la API. En este caso, los datos de consulta que esperará de la API países esquema son los nombre , teléfono , divisa , código , y emoji campos.

Puedes usar el Mariscal metodo de la json paquete para codificar la instancia del mapa en JSON. los Mariscal El método devuelve el JSON codificado y un error para los casos con un problema de codificación.

jsonResult, err := json.Marshal(jsonMapInstance) 

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

Una vez que haya codificado el mapa en JSON, puede enviar la solicitud POST a la API. Puede crear una nueva instancia de solicitud con el Nueva solicitud método, que toma el tipo de solicitud, la URL y el búfer JSON.

los Nueva solicitud método devuelve una instancia de solicitud. Deberá establecer el tipo de contenido según las especificaciones de la API. Puede establecer el tipo de contenido para las solicitudes HTTP con el Establecer metodo de la Encabezamiento método de su instancia de solicitud.

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

Puede crear un cliente HTTP simple para su solicitud con el Cliente método del paquete HTTP. los Cliente El método también le permite establecer un límite de tiempo para su solicitud con el tiempo paquete.

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

Después de haber declarado el cliente HTTP, ejecute su solicitud de API con el Hacer método. los Hacer El método acepta la instancia de solicitud y devuelve la respuesta y un error.

Puede leer la respuesta de la solicitud de la API con el ioutil paquete Lee todo método. Toma un flujo de salida y devuelve un segmento de bytes de los datos con un error que puede manejar.

ram tiene que ser de la misma marca
responseData, err := ioutil.ReadAll(response.Body) 

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

Con la función de cadena incorporada, puede convertir la respuesta del segmento de bytes al tipo de cadena.

fmt.Println(string(responseData)) 

Aquí hay una respuesta que muestra el resultado de la solicitud de la API:

  El resultado de una consulta API de GraphQL muestra una lista de países y sus campos solicitados.

Consumir API RESTful es como consumir API GraphQL

Dado que las API REST y GraphQL usan el protocolo HTTP, consumir cada una es un proceso muy similar y puede usar el http Paquete para ambos casos.

Deberá crear clientes, solicitar instancias y leer los datos con los mismos paquetes.