Як рахуються запити
Кожне виконане кореневе поле операції — це один виклик API. GraphQL-запит, що запитує чотири кореневі поля, тарифікується як чотири виклики API, так само як якби ви зробили чотири REST-запити. Аліаси на кореневому рівні рахуються окремо, тому що кожен із них запускає операцію. Вкладені поля, вибрані з типізованої відповіді, не додають викликів API.- Наявні ліміти вашого плану застосовуються без змін. Див. ліміти API, щоб дізнатися, що передбачає ваш план.
- Запит кореневої операції, яка вам не потрібна, коштує стільки ж, скільки її виклик через REST. Вибір потрібних вам вкладених полів відповіді не додає викликів.
- Запит може потрапити під rate limit посеред виконання. Кореневі поля, які завершилися, зберігають свої дані, і лише обмежені кореневі поля повертають помилки — див. Частковий успіх.
Ліміти запитів
Ендпоінт застосовує кілька лімітів до структури та розміру запиту. Вони існують для того, щоб один запит не міг споживати надмірну частку наших ресурсів, і встановлені значно вище, ніж потрібно для звичайного використання: якщо ви впираєтеся в один із них, зазвичай це ознака випадково згенерованого запиту, а не реальної потреби.
Відхилений запит повертає HTTP 400, якщо ви надсилаєте
Accept: application/graphql-response+json, і HTTP 200 в іншому разі; в обох випадках із масивом errors і без data. Див. Помилки.
Викликів API на запит
Найважливіший ліміт. Один запит може ініціювати щонайбільше 5 викликів API, тож наведений вище приклад із чотирма кореневими полями підходить, а приклад із двадцятьма — ні. Щойно запущено п’ять викликів, додаткові кореневі поля повертають 429 з поясненням ліміту; поля, які вже було запущено, все одно можуть повернути свої дані. Якщо вам потрібно більше, розділіть запит на кілька запитів. Якщо ви регулярно робите це для легітимного навантаження, зв’яжіться з нами: ліміт навмисно консервативний для запуску, і підвищити його просто, тоді як зниження згодом зламало б інтеграції, тому він починається з малого.Глибина, поля, аліаси та директиви
Вони перевіряються ще до виконання, тож перевищення будь-якого з них не коштує вам жодного виклику API. Вони також із запасом покривають повний запит інтроспекції, який має близько 180 полів і 12 рівнів глибини без аліасів і директив, тож клієнт, що отримує всю схему під час запуску, працює нормально.Розмір тіла запиту
64 KB — це щедро для запиту і занадто мало для файлу. Саме тому медіа не можна завантажувати через GraphQL — підтримуваний спосіб описано в розділі Завантаження медіа.Тайм-аути
Загалом на запит відводиться до 120 секунд. Кореневі поля в query можуть виконуватися паралельно, тож його тривалість зазвичай визначається найповільнішою залежністю. Кореневі поля в mutation виконуються послідовно, тож кілька повільних mutations можуть у сумі наблизитися до тайм-ауту. Будь-яка з форм усе одно може створити на бекенді навантаження до п’яти паралельних або послідовних викликів; за потреби розділяйте відомо повільну роботу.Що не обмежується
- Читання схеми. Інтроспекція не потребує автентифікації та не тарифікується. Переглядати, що є в API, безкоштовно; виконання операції — ні.
- Некоректні запити. Запит, який GraphQL відхиляє (невідоме поле, неправильний тип, некоректне значення enum), ніколи не доходить до нашого API і ніколи не тарифікується.