¿Qué es GraphQL? Mitos comunes desmentidos.

Me encanta hablar sobre GraphQL, especialmente con personas que han estado trabajando con GraphQL o están pensando en adoptar GraphQL. Una pregunta común que tiene la gente es por qué alguien querría pasar a GraphQL desde REST.

Hay un montón de recursos que hablan sobre la diferencia entre REST y GraphQL y son excelentes para ver si está interesado en saber en qué se diferencian esos dos. En esta publicación de blog, quiero abordar algunos conceptos erróneos comunes y preguntas sobre GraphQL.

¿Cómo se beneficia de GraphQL en la interfaz?

Como ingeniero front-end, me gusta trabajar con una API GraphQL por las siguientes razones:

  1. Puede probar instantáneamente consultas y mutaciones usando GraphiQL o playground
  2. Menos datos significa una gestión del estado más ligera
  3. Descarga el trabajo pesado al servidor a través de resolutores
  4. Tiene documentación actualizada e interactiva

¿Cómo es mejor que DESCANSAR?

  1. Hay un punto final para recuperar todos los recursos.
  2. Evita la obtención excesiva de datos (obtener demasiados campos cuando solo se necesitan unos pocos).
  3. Evita la obtención de datos insuficientes (tener que llamar a varias API porque una API no devuelve toda la información necesaria).

Mito: GraphQL se utiliza para consultar bases de datos de gráficos.

GraphQL se puede utilizar para consultar una base de datos de gráficos, pero este no es su único caso de uso. El "gráfico" en GraphQL se utiliza para representar la estructura de datos en forma de gráfico. Modela los datos en términos de nodos y cómo se conectan entre sí. El esquema se utiliza para representar este modelo.

No hay ninguna limitación en la especificación GraphQL que obligue a que la fuente de datos sea un gráfico.

Mito: GraphQL solo funciona con bases de datos o fuentes de datos basadas en gráficos.

Es un error pensar que necesita reescribir su base de datos para adoptar GraphQL. GraphQL puede envolver cualquier fuente de datos, incluidas las bases de datos. GraphQL es un query language for your API, lo que significa que es una sintaxis de cómo solicitar datos.

Mito: La búsqueda de datos con resolutores, consultas y mutaciones funciona de forma mágica.

Deberá definir exactamente qué debe hacer cada uno de ellos. Escribirás funciones que se llaman cuando se disparan las consultas y escribirás funciones para los resolutores que envían exactamente los datos que necesitas y saben a qué API llamar. Definirá qué datos regresan a través de esas funciones llamando a los resolutores.

Mito: GraphQL reemplaza a Redux o cualquier biblioteca de administración de estado

Redux es una biblioteca de gestión estatal. GraphQL no es una biblioteca de gestión estatal. GraphQL ayuda a obtener menos datos, lo que a su vez conduce a menos datos para administrar en el lado del cliente, pero no es una solución de administración de estado.

Aún necesitará administrar el estado, aunque de una manera más ligera. Las bibliotecas cliente como Apollo y Relay se pueden usar para administrar el estado y tienen almacenamiento en caché incorporado. GraphQL no reemplaza a Redux, ayuda a reducir su necesidad.

Mito: GraphQL es un lenguaje de base de datos.

GraphQL es un lenguaje de programación, específicamente un lenguaje de consulta. La especificación de GraphQL define cómo los tiempos de ejecución de GraphQL deben implementar el lenguaje y cómo se deben comunicar los datos entre el cliente y el servidor.

GraphQL se usa para solicitar datos y se puede usar en múltiples lugares en cualquier capa desde el front-end hasta el back-end. Hay bases de datos como DGraph que implementan la especificación GraphQL, lo que permite a los clientes usar GraphQL para consultar la base de datos.

Mito: no puede tener puntos finales REST en su implementación con GraphQL.

Puede conectar varios puntos finales REST o incluso varios puntos finales GraphQL en su aplicación. Aunque no es una buena práctica tener varios puntos finales REST, es técnicamente posible.

Mito: GraphQL es difícil de introducir en un proyecto existente.

GraphQL se puede conectar a un proyecto existente. Puede comenzar con un componente de la lógica empresarial, conectar un punto final GraphQL y comenzar a obtener datos a través de GraphQL. No es necesario desechar un proyecto completo para comenzar a usar GraphQL.

Si cambiar a un punto final GraphQL sigue siendo una tarea abrumadora, puede comenzar enmascarando un punto final REST en un punto final GraphQL utilizando resolutores.

Mito: GraphQL es solo para desarrolladores front-end

GraphQL es independiente de la plataforma. En mi opinión, la belleza de los beneficios de GraphQL comienza desde adentro hacia afuera, desde el principio hasta el final.

Como desarrollador back-end, puede expandir la API agregando campos sin tener que publicar una nueva versión de la API. No es necesario escribir diferentes puntos finales para diferentes necesidades, ya que los clientes pueden obtener cualquier información que necesiten.

Con GraphQL, tiene visibilidad de los campos que utilizan los clientes, lo que proporciona una potente instrumentación.

Mito: GraphQL escribirá consultas de base de datos por sí mismo, solo necesito especificar esquemas y la relación entre ellos

Es posible que deba escribir las consultas de la base de datos según la biblioteca GraphQL que esté utilizando. Sin embargo, algunas bibliotecas como Neo4j y Prisma también escriben consultas de base de datos y abstraen la lógica del desarrollador. Todo, incluidos los resolutores, las consultas y las mutaciones, debe definirse.

Mito: GraphQL se usa para dibujar gráficos.

A menudo, las personas nuevas en GraphQL piensan que es un software de trazado de gráficos como D3. GraphQL no traza gráficos.

Mito: GraphQL requiere clientes complicados y es casi imposible de hacer con una simple búsqueda HTTP

Mito: reemplaza a los ORM.

Últimamente vemos mucha integración DB y GraphQL, pero GraphQL en sí no es eso.

¡Creo que GraphQL es increíble! Hay una multitud de bibliotecas que ayudan al usuario a comenzar con GraphQL. Si está interesado en aprender sobre GraphQL, comience con la documentación o consulte este curso de Udemy que encontré útil cuando era nuevo en GraphQL.

¡Estoy declarando una guerra!

var war; #DevJoke

- Shruti Kapoor (@ shrutikapoor08) 12 de diciembre de 2019