¿Qué Es la Sobreconsulta?
En la raíz de la razón por la que la gente recomienda GraphQL está un concepto llamado sobreconsulta. En muchas APIs, cuando preguntas por un objeto, la API devuelve todo lo que sabe, porque no sabe en qué estás interesado. GraphQL (como SQL) te permite decirle a la API específicamente qué es lo que buscas antes de que haga la consulta.
Es como entrar a un restaurante y pedir que te traigan todo lo del menú a la mesa, para luego escoger tu aperitivo, plato principal y postre. El resto se desperdicia.
Un Ejemplo Práctico
Considera una consulta hecha por la aplicación imaginaria de un camarero con dispositivo portátil:
query foodPricesForOrder {
menuItem(id: "Jxkjahdkfh==") {
id
description
longDescription
calories
price
picture
}
}
¿Qué pasaría si omitimos longDescription? Ahorraríamos tráfico de red, aunque la consulta a la base de datos en sí no sea notablemente más rápida si todos los campos están en la misma tabla.
Pero fíjate en ese campo picture: podría ser una imagen codificada en base64. No queremos eso en una aplicación portátil para camareros. En REST, no tendríamos más opción que recibirla, o el desarrollador de la API tendría que crear un endpoint separado para imágenes. Peor aún, la solución REST podría obligar al cliente a hacer llamadas separadas para cada plato.
Cómo GraphQL Resuelve Esto
GraphQL te permite pedir solo lo que necesitas. Si hay un resolvedor adjunto al campo picture (en AppSync, Apollo o cualquier servidor GraphQL), solo se activa cuando ese campo aparece en la consulta. Siempre que no lo incluyas, no pagas el costo por él.
Esto es cierto en toda la API de Legalesign. Los campos que requieren búsquedas costosas — objetos relacionados, valores calculados, cargas grandes — solo se resuelven cuando los pides.
La Conclusión
Cuando diseñes tus consultas, piensa en qué campos realmente necesitas. Elimina todo lo que tu interfaz de usuario no use. Reducirás el tamaño de la carga, la latencia de la red y la computación del servidor.
Consulta Diseñando Consultas para más pautas prácticas.