DOCS

Por qué GraphQL

Descubra por qué recomendamos integrar mediante GraphQL en lugar de REST.

En Zonos ofrecemos dos tipos principales de API para la integración: GraphQL y REST. Aunque las API REST llevan más tiempo en el mercado y pueden resultar más familiares para muchos, hemos adoptado GraphQL para permitir mayor flexibilidad e innovación más rápida. Aunque ambas siguen siendo compatibles, esta guía explica por qué GraphQL no solo es el futuro de nuestras integraciones, sino también el futuro de las integraciones en general y una herramienta más potente para satisfacer sus necesidades actuales.

¿Qué es GraphQL? 

GraphQL es una forma alternativa de comunicarse con las API, muy adecuada para estructuras de datos complejas y para construir interfaces sobre ellas. A diferencia de tratar los datos como piezas separadas e independientes, GraphQL muestra cómo se conectan y relacionan entre sí, lo que facilita solicitar y recibir información.

Piense en GraphQL como un lenguaje de consulta que le permite hablar con la API como si hablara directamente con la base de datos. Usar GraphQL le permite acercarse lo máximo posible a la base de datos, eligiendo qué datos quiere y cómo obtenerlos, lo que supone una enorme ventaja de rendimiento.

GraphQL fue creado por Facebook para resolver el problema de escalar con estructuras de datos complejas. Tras su adopción exitosa, cada vez más empresas han empezado a reconocer los beneficios de usar GraphQL para sus API.

¿Ya conoce REST? GraphQL le resultará familiar.

Las API GraphQL son más fáciles de usar de lo que pueda pensar. Si está acostumbrado a trabajar con API REST, así se traducen los conceptos principales de REST a GraphQL.

CaracterísticaRESTGraphQL
EndpointLas solicitudes se realizan a varios endpoints para distintas accionesTodas las solicitudes se realizan a un único endpoint (p. ej., /graphql)
Recuperación de datosUse métodos GET en endpoints específicos para recuperar datosUse consultas para solicitar exactamente los datos necesarios, reduciendo la sobre- o subrecuperación
Modificación de datos/accionesUse métodos HTTP como POST, PUT, PATCH o DELETE para modificar o procesar datosUse mutaciones para realizar operaciones (p. ej., crear partes, calcular landed costs)
Formato de respuestaLos formatos de respuesta fijos devuelven todos los campos predefinidos, aunque no se necesitenLas respuestas flexibles permiten especificar exactamente los campos a incluir, reduciendo la transferencia innecesaria de datos (si esta flexibilidad le parece complicada, use simplemente los ejemplos de consulta de nuestra documentación para una experiencia similar a REST)
Conexión de datosA menudo se requieren varias solicitudes para obtener datos relacionadosLas consultas anidadas permiten recuperar datos relacionados en una sola solicitud (p. ej., detalles de partes y artículos del envío juntos). Los usuarios también pueden construir flujos de trabajo para gestionar varias mutaciones en una sola solicitud GraphQL, reduciendo la complejidad y mejorando la eficiencia

Ventajas de GraphQL

Una analogía 

Imagine que está en un restaurante con un menú que le permite pedir platos exactamente como los desea, frente a otro restaurante donde solo puede elegir menús fijos. GraphQL es como el primer restaurante:

  • Obtenga exactamente lo que quiere: Con GraphQL, puede solicitar exactamente los datos que necesita, ni más ni menos. Imagine que solo quiere el nombre y el precio de un plato, no toda la lista de ingredientes. Con las API REST, debe obtener todos los detalles del plato e ignorar las partes que no necesita.
  • Componga un plato a medida: Nuestra API GraphQL puede combinarse fácilmente para crear soluciones más personalizadas, similar a un restaurante tipo buffet donde puede crear un plato único exactamente como lo necesita, con ingredientes que ya tienen. En cambio, una API REST es como una panadería con productos prefabricados empaquetados en cestas: solo puede pedir lo que ya se ha creado y no puede elegir llevarse solo la pieza que desea.
  • Menos espera: Como puede obtener toda la información que necesita en una sola solicitud, es como pedir al camarero que traiga el aperitivo, el plato principal y el postre a la vez, en lugar de esperar entre platos. La mayoría de las API REST requieren enviar varias solicitudes para obtener distintas piezas de información.
  • Fácil de cambiar pedidos: Si cambian las necesidades de datos de su aplicación, GraphQL facilita el ajuste. Solo cambia la consulta de lo que necesita. Con REST, podría tener que esperar a que la cocina (backend) cree una nueva comida (endpoint) para el menú, lo que lleva más tiempo.

GraphQL ofrece más flexibilidad, eficiencia y simplicidad para obtener datos que las API REST, especialmente a medida que sus necesidades cambian o crecen.

Cómo Zonos usa GraphQL 

Al modernizar nuestra plataforma en los últimos años, Zonos ha optado por construir nueva funcionalidad usando GraphQL para nuestra API en lugar de REST. Lo hicimos porque nuestros datos son complejos e interconectados, muy parecidos a los datos que llevaron a Facebook a crear GraphQL. Esta complejidad dificulta construir API REST escalables porque las formas en que los desarrolladores necesitan obtener y usar los datos varían enormemente entre implementaciones, y REST no es flexible.

GraphQL resuelve este problema al permitir que los desarrolladores que implementan nuestra API elijan exactamente qué datos quieren y cómo obtenerlos. Esto les permite integrarlo en sus flujos de trabajo sin que Zonos tenga que hacer trabajo personalizado (mientras esperan) para cada situación.

El resultado combinado de usar GraphQL y las modernizaciones de nuestra plataforma ha hecho nuestra API más eficiente, ha acelerado la integración de Zonos en sus sistemas y ha permitido a Zonos ofrecer nuevas funciones con mayor rapidez.

Mejores funciones

Zonos desarrolla continuamente nuevas funciones, y GraphQL es el primero (y normalmente el único) en recibir estas actualizaciones. En cambio, nuestras API REST se consideran en fin de vida y no pueden acceder a muchas de nuestras funciones nuevas.

Ejemplos de funciones limitadas a GraphQL:

  • Inclusive Pricing
  • Labels API
  • Nuevo Checkout y Hello
  • Tamaños de caja en la respuesta de la API
  • Informes de Dashboard
  • Capacidad de solicitar una cotización DDP si es posible, pero devolver igualmente una cotización DDU si DDP no está disponible para ese país con ese nivel de servicio
  • Desglose detallado de aranceles, impuestos y tasas (información a nivel de artículo, tasas específicas): Dashboard funciona con GraphQL y muestra estos datos para todas las tiendas, pero la respuesta de la API REST no incluye este nivel de detalle
  • Modo de prueba (próximamente)

¿Fue útil esta página?