GraphQL
GraphQL es un lenguaje de consulta para APIs desarrollado por Facebook que permite obtener exactamente los datos que necesita el cliente de manera eficiente. A diferencia de REST, donde cada endpoint devuelve un conjunto fijo de datos, GraphQL permite consultas flexibles y precisas sobre los recursos del servidor.
Características
- Consultas personalizadas: El cliente puede especificar exactamente qué campos necesita, evitando sobrecarga de datos.
- Un solo endpoint: Todas las consultas y mutaciones se envían a un único endpoint, a diferencia de REST donde cada recurso tiene su propia URL.
- Tipado fuerte: GraphQL utiliza un esquema definido con tipos para cada dato, lo que facilita la validación y documentación automática.
- Mutaciones y suscripciones:
- Mutaciones: Permiten crear, actualizar o eliminar datos.
- Suscripciones: Permiten recibir datos en tiempo real cuando cambian ciertos recursos (útil para notificaciones y eventos).
- Documentación automática: El esquema tipado permite que herramientas como GraphiQL o Apollo Studio generen documentación interactiva de la API.
Ventajas de GraphQL frente a REST
- Menor sobrecarga de datos (overfetching): el cliente recibe solo lo que necesita.
- Menos endpoints: un único endpoint para todas las consultas.
- Facilidad de evolución: se pueden añadir nuevos campos sin afectar a clientes existentes.
- Es agnóstico al backend: puede conectarse a una base de datos, una API REST o incluso a otro GraphQL.
- Documentación automática gracias al esquema tipado.