¿Por qué GraphQL es una excelente alternativa a API REST?

En el desarrollo de aplicaciones modernas se ha popularizado de manera significativa el uso de API o servicios web para el acceso a los datos. Los motivos son diversos, como el acceso a la información de manera independiente al frontal donde se van a visualizar los datos, la escalabilidad y la necesidad de atender una enorme cantidad de solicitudes con recursos ajustados. Aunque la arquitectura REST es la opción más extendida para servicios web, GraphQL ofrece  algunas ventajas adicionales que merece la pena conocer y que la han convertido en una de las principales tendencias en Desarrollo Web de 2019.

Pero antes de nada. ¿Qué es GraphQL? Para explicarlo de manera breve podemos decir que es un lenguaje de consulta usado para acceder a datos a través de un servidor. Es independiente del sistema frontend y facilita a los clientes el acceso a la información de una manera ágil y versátil.

Está desarrollado por Facebook y liberado como código abierto en 2015, aunque desde 2018 está gestionado por la Linux Fundation. Facebook lo usa en multitud de productos, como sus aplicaciones web y por supuesto las apps de Android e iOS. Pero además otras muchas empresas en el mundo ofrecen servicios web basados en GraphQL, como Pinterest o Github.

¿Por qué usar GraphQL?

Existen multitud de ventajas de GraphQL para el desarrollo de un servicio web. La mayoría de las que podríamos destacar son comunes a alternativas más tradicionales como REST:

  • Principalmente, la posibilidad de mantener separada la parte del backend de un proyecto, permitiendo además desarrollar un único servicio web, que será capaz de funcionar a través de diversas plataformas, como aplicaciones web o apps móviles iOS o Android.
  • La posibilidad de ofrecer un servicio altamente escalable y con elevada disponibilidad.

Pero, además, en relación a otras alternativas como SOAP o REST también ofrece ventajas muy relevantes:

Versatilidad

Mientras que REST está orientada a recursos, GraphQL permite definir qué información se desea recibir y en qué formato. Con el lenguaje de consulta de GraphQL, cuando se realiza una solicitud al servidor, se puede definir qué datos se van a recibir en dicha consulta, incluso obtener de una única vez un recurso con determinados datos propios y otros recursos relacionados.

Esto permite que el desarrollo de frontend pueda resultar más sencillo, por diversos factores:

  • Resulta más natural, puesto que muchas veces se necesita acceder a dos o más recursos a la vez, como podría ser un listado de comentarios con los datos de los usuarios que los han realizado. O una cantidad de artículos con las categorías donde se encuentran asociados.
  • Como desde el frontend podemos definir exactamente qué datos se desean obtener como respuesta, también nos aseguramos que el servidor nunca nos entrega más datos de los que van a ser estrictamente necesarios.

Velocidad

La velocidad de un servicio web dependerá de muchos factores, como el lenguaje, los servidores donde se ejecute, etc. Pero a priori, gracias a la posibilidad de acceder a un set arbitrario de datos del servicio web, podemos ganar en rendimiento gracias a la disminución del número de consultas al servidor.

Sencillez de desarrollo

Con GraphQL podemos beneficiarnos de una mayor facilidad a la hora de desarrollar cada uno de los frontales necesarios para el proyecto. Al reducir el número de solicitudes para visualizar juegos de datos complejos, se reduce también la complejidad de la programación frontend, lo que deriva también en una aparición menor de errores potenciales.

Manejo de versiones del API

Otro de los detalles que en situaciones es difícil de gestionar en arquitecturas REST es el versionado del API. Gracias a la definición en el cliente de los juegos de datos a recibir como resultado de las consultas, es indiferente que se agreguen nuevos datos a los modelos, o que se marquen como obsoletos algunos. Por tanto, en el código del servidor no es necesario más que gestionar una versión de la API.

Complementa a otras tecnologías

Usar GraphQL no es excluyente. Podrías perfectamente mezclarlo con un servicio web ya desarrollado, que quizás ya implementa REST, pero donde quieres reducir la complejidad de determinadas solicitudes.

Por todos estos motivos, GraphQL es un firme candidato para una implementación sencilla de un servicio web, ofreciendo un conjunto de ventajas superior al de otras alternativas. Si quieres encontrar más información te recomendamos acceder directamente a su página web oficial.