Skip to main content

Cómo se cuentan las solicitudes

Cada campo de operación raíz ejecutado es una llamada a la API. Una solicitud GraphQL que pide cuatro campos raíz se factura como cuatro llamadas a la API, exactamente igual que si hubieras hecho cuatro solicitudes REST. Los alias en la raíz cuentan por separado porque cada uno despacha una operación. Los campos anidados seleccionados de una respuesta tipada no añaden llamadas a la API.
Una solicitud HTTP, cuatro llamadas a la API contra la cuota y el rate limit de tu plan. Esto es intencionado y es el modelo honesto: cada campo raíz hace en nuestro lado el mismo trabajo que la llamada REST equivalente, así que cuesta lo mismo. GraphQL te ahorra viajes de ida y vuelta y te permite obtener exactamente lo que necesitas en un solo lugar; no es una forma de conseguir más llamadas a la API de las que incluye tu plan. Las consecuencias prácticas:
  • Los límites de tu plan actual se aplican sin cambios. Consulta los límites de la API para conocer lo que incluye tu plan.
  • Pedir una operación raíz que no necesitas cuesta lo mismo que llamarla por REST. Seleccionar los campos anidados de la respuesta que necesitas no añade llamadas.
  • Una solicitud puede sufrir un rate limit a mitad de camino. Los campos raíz que se completaron conservan sus datos, y solo los campos raíz limitados devuelven errores; consulta Éxito parcial.

Límites de consulta

El endpoint aplica algunos límites a la forma y el tamaño de una query. Existen para que una sola solicitud no pueda consumir una cantidad desproporcionada de nuestra capacidad, y están fijados muy por encima de lo que requiere un uso normal: si alcanzas uno, suele ser señal de una query generada por accidente más que de una necesidad real. Una query rechazada devuelve HTTP 400 si envías Accept: application/graphql-response+json, y HTTP 200 en caso contrario, con un array errors y ningún data en ambos casos. Consulta Errores.

Llamadas a la API por solicitud

El más importante. Una sola solicitud puede desencadenar como máximo 5 llamadas a la API, así que el ejemplo anterior de cuatro campos raíz está bien, pero uno de veinte campos raíz no. Una vez iniciados cinco despachos, los campos raíz adicionales devuelven un 429 que explica el límite; los campos ya despachados pueden seguir devolviendo sus datos. Si necesitas más, divide la query en varias solicitudes. Si ves que lo haces de forma habitual para una carga de trabajo legítima, ponte en contacto: el límite es deliberadamente conservador para el lanzamiento y aumentarlo es sencillo, mientras que reducirlo más adelante rompería integraciones, así que empieza bajo.

Profundidad, campos, alias y directivas

Se comprueban antes de que se ejecute nada, así que superar uno no te cuesta ninguna llamada a la API. También quedan holgadamente por encima de una query de introspección completa, que tiene unos 180 campos y 12 niveles de profundidad sin alias ni directivas, así que un cliente que obtiene todo el esquema al iniciarse funciona con normalidad.

Tamaño del cuerpo de la solicitud

64 KB, que es generoso para una query y demasiado pequeño para un archivo. Por eso no se pueden subir medios a través de GraphQL; consulta Subir medios para conocer la vía compatible.

Tiempos de espera

Una solicitud dispone de hasta 120 segundos en total. Los campos raíz de una query pueden ejecutarse de forma concurrente, por lo que su duración depende generalmente de su dependencia más lenta. Los campos raíz de una mutation se ejecutan en serie, por lo que varias mutations lentas pueden acumularse hasta alcanzar el tiempo de espera. Cualquiera de las dos formas puede generar en el backend la carga de hasta cinco despachos concurrentes o secuenciales; divide el trabajo que sabes que es lento cuando convenga.

Lo que no está limitado

  • Leer el esquema. La introspección no requiere autenticación ni se contabiliza. Explorar lo que existe es gratis; ejecutar una operación no.
  • Queries mal formadas. Una query que GraphQL rechaza (campo desconocido, tipo incorrecto, valor de enum no válido) nunca llega a nuestra API y nunca se factura.
Estos límites se revisan en función del uso real. Si alguno no encaja con una integración legítima, dínoslo: esos comentarios son más útiles que una solución alternativa.