¿Que es GraphQL ?


¿Qué es GraphQL?

GraphQL es un lenguaje orientado a queries para nuestras API’s, que corre en el lado servidor y permite obtener la información deseada a partir de un sistema definido para la obtenerla. Uno de sus puntos fuertes es que no esta atada a ningún sistema de base de datos.

GraphQL se creo y pensó para reducir el coste de las queries contra base de datos, es decir, intentar optimizar el número de campos que se traían o reducirlos, ya que no siempre se necesitan todos los campos. Este lenguaje de queries fue creado por Facebook en el año 2012 y en el año 2015 fue publicada su primera release.

Schemas, resolvers y otros términos de GraphQL

Los desarrolladores de API utilizan GraphQL para crear un esquema para describir todas las consultas que se pueden y se van a necesitar de un servicio.

Un esquema en GraphQL es un compuesto de tipos de objetos, que define el tipo de objeto que podrás consultar así como sus campos.

El desarrollador del API adjunta cada campo en un esquema a una función llamada RESOLVER, y esta función es a la que se llama durante la ejecución para producir el valor.

En un principio GraphQL se encarga de validar y definir la sintaxis para las queries en el API, y deja el resto de las decisiones al diseñador de API. GraphQL ni impone ni proporciona ningún direccionamiento sobre que lenguaje usar o como o dónde almacenar la información

Si nos vamos al lado del cliente, la mayoría de las operaciones que se van a llevar a cabo, son queries y mutaciones (mutations). Si pensamos en el típico CRUD, una query podría ser cualquier operación de lectura, y todas las demás las englobaríamos en mutaciones.

Ventajas

  • Muchos open source GraphQL ofrecen extensiones que no estarían disponibles para una arquitectura API REST.
  • GraphQL no te obliga a tener una arquitectura concreta o específica. Puede estar en la parte superior de cualquier REST API y funcionar con gestores de API y con la arquitectura que se tenga.
  • Permite la evolución de cualquier arquitectura, sin romper las consultas existentes.
  • Si los tipos de datos están fuertemente definidos, reduce la comunicación entre cliente y base de datos, con lo que se permite tener un mejor rendimiento y una mayo optimización.
  • GraphQL es introspectivo,

Desventajas

  • Curva de aprendizaje para aquellos que están familiarizados o suelen trabajar con API REST. Los conceptos cambian, y la forma de trabajar también, por lo que si se decide por este sistema el cambio debería ser progresivo en cualquier entorno.
  • GraphQL añade complejidad a los desarrolladores que se encuentran en el lado servidor.
  • Cache: Debido a que el uso común de GraphQL es sobre HTTP, cache a nivel de red puede llegar a ser muy complicado. Una forma de resolverlo es con Persisted Queries.
  • Graphql queries ocupan y utilizan más bytes que una simple llamada REST contra un endpoint.

Ejemplos:

La mejor manera de poder entender GraphQL es con ejemplos y practicando aquí van algunos, de todos modo en la página oficial,  GraphQL , se puede encontrar multitud de información así como ejemplos y ayuda.

Ejemplo 1: Preguntamos sobre un campo específico

{
  me {
    name
  }
}

GraphQL API devolvería un resultado en JSON como este:

{
  "me": {
    "name": "Noel"
  }
}

Ejemplo 2: Obviamente le podemos pasar parámetros a la query, por ejemplo, quiero el identificador 2 de una persona.

{
  person(id: "2") {
    name
    country
  }
}

The result:

{
  "data": {
    "person": {
      "name": "Noel,
      "country": "Spain"
    }
  }
}

Estas queries que hemos realizado son bastante sencillas y simples, con la que hemos visto como un cliente puede construir una query con GraphQL, pero el potencial de GraphQL es mucho mayor, y lo mejor que se puede hacer es leer y practicar.

Open Source con GraphQl

Hay bastantes proyectos de open source relacionados con GrapQL, a continuación pongo unos cuantos:

  • Apollo, incluye cliente y servidor
  • Offix, permite mutaciones y queries.
  • Graphback, para clientes y servidores.
  • OpenAPI-to-GraphQL, si utilizas swagger en tus proyectos esta es tu herramienta transforma de swagger a GraphQL.

1 pensamiento sobre “¿Que es GraphQL ?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *