GraphQL vs REST: en qué se diferencian de verdad

GraphQL vs REST

GraphQL vs REST: los mismos datos pedidos de las dos formas | We.Inc

Compara GraphQL y REST con los mismos datos pedidos de las dos formas: número de peticiones, over-fetching, caché, cómo llegan los errores y una tabla para elegir.

REST expone muchas URL, una por recurso, y el servidor decide qué contiene cada respuesta. GraphQL expone un único endpoint, normalmente /graphql, al que el cliente envía una consulta que nombra exactamente los campos que quiere. REST obtiene caché HTTP gratis por URL; GraphQL ahorra viajes de ida y vuelta y recorta los campos que no se usan, a cambio de más trabajo en el servidor.

De un vistazo

La comparación de abajo pide la misma pantalla de datos de las dos formas. Elige un escenario para ver las llamadas REST que haría un cliente junto a la única consulta GraphQL que las sustituye, y lo que cada respuesta omite o añade.

Preguntas frecuentes

¿GraphQL es más rápido que REST?

No por sí solo. Puede reducir los viajes de ida y vuelta y el tamaño de la respuesta en pantallas que necesitan datos relacionados, pero cada consulta puede costarle más al servidor. Un endpoint REST bien diseñado para una pantalla puede ser igual de rápido.

¿Por qué un error de GraphQL llega con estado 200?

Un campo puede fallar mientras otros funcionan, así que el servidor devuelve los datos que tiene más un array errors. La guía de GraphQL sobre HTTP usa 2xx para el éxito parcial; los servidores que responden con application/graphql-response+json usan 400 cuando una petición no pasa la validación.

¿Una CDN puede cachear respuestas de GraphQL?

Sí, si las consultas se envían con GET, que los servidores pueden permitir solo para consultas. Las consultas largas pueden superar los límites de la URL, así que los equipos usan persisted queries que envían un hash corto en lugar del documento entero.

¿Puedo usar los dos en un mismo producto?

Muchos equipos lo hacen. Las subidas de archivos, los webhooks y los recursos públicos sencillos suelen quedarse como rutas REST, mientras las pantallas de la app leen a través de una capa GraphQL que puede llamar por debajo a esos mismos servicios.

¿GraphQL necesita su propia base de datos?

No. Un servidor GraphQL es una capa de resolvers, pequeñas funciones que obtienen cada campo de donde estén los datos: una base de datos, un servicio REST o un archivo. El esquema describe formas, no almacenamiento.

Over-fetching y under-fetching

La caché funciona de otra manera

Errores y códigos de estado

Cuál elegir

Tabla de decisión

Qué viaja por la red

Una petición GraphQL con fetch

Cada operación es un POST de JSON con las claves query y variables al único endpoint. La cabecera Accept pide el tipo de respuesta GraphQL más reciente, con JSON normal como alternativa.

Una respuesta GraphQL parcial

Un campo falló, así que es null y la entrada de errors lo nombra con path. El resto de los datos llegó igualmente.

Perfil con publicaciones

REST necesita una segunda llamada para las publicaciones, y ambas respuestas llevan todos los campos que incluye el servidor. La consulta GraphQL devuelve solo el nombre, el avatar y tres títulos de publicaciones.

Solo nombres

Para una lista sencilla, la llamada REST es una sola petición en cualquier caso, pero envía registros de usuario completos. GraphQL envía solo los dos campos pedidos.

Publicación con comentarios y autores

Sin un endpoint a medida, REST recorre el árbol un nivel por petición, y obtener el autor de cada comentario puede suponer una llamada más por comentario. GraphQL anida el árbol entero en una sola consulta.

Crear una publicación

Las escrituras se parecen: una petición cada una. REST usa el método POST sobre una URL de colección; GraphQL envía una mutation, también como POST de HTTP, y elige qué campos de la nueva publicación devolver.

Los mismos datos, de las dos formas

Elige un escenario

Peticiones REST

Consulta GraphQL

Copiar peticiones REST

Copiar consulta GraphQL

REST: {n} petición(es). GraphQL: {v} petición.

Empieza gratis · Sin tarjeta de crédito

Relacionado: Guías

Producto

Para quién es

Funciones

Recursos

Empresa

Mapa del sitio