{"meta":{"title":"Ограничения скорости и ограничения запросов для API GraphQL","intro":"GitHub API GraphQL имеет ограничения для защиты от чрезмерных или злоупотребленных вызовов GitHubсерверов .","product":"API GraphQL","breadcrumbs":[{"href":"/ru/enterprise-server@3.18/graphql","title":"API GraphQL"},{"href":"/ru/enterprise-server@3.18/graphql/overview","title":"Обзор"},{"href":"/ru/enterprise-server@3.18/graphql/overview/rate-limits-and-query-limits-for-the-graphql-api","title":"Ограничения скорости и запросов"}],"documentType":"article"},"body":"# Ограничения скорости и ограничения запросов для API GraphQL\n\nGitHub API GraphQL имеет ограничения для защиты от чрезмерных или злоупотребленных вызовов GitHubсерверов .\n\n## Ограничение основной скорости\n\nОграничения скорости по умолчанию отключены для GitHub Enterprise Server. Обратитесь к администратору сайта, чтобы подтвердить ограничения скорости для вашего экземпляра.\n\nЕсли вы являетесь администратором сайта, вы можете задать ограничения скорости для вашего экземпляра. Дополнительные сведения см. в разделе [Настройка ограничений скорости](/ru/enterprise-server@3.18/admin/configuring-settings/configuring-user-applications-for-your-enterprise/configuring-rate-limits).\n\nЕсли вы разрабатываете приложение для пользователей или организаций вне вашего экземпляра, применяются стандартные GitHub тарифные ограничения. Для получения дополнительной информации см. [раздел AUTOTITLE](/ru/graphql/overview/rate-limits-and-query-limits-for-the-graphql-api) в GitHub Free документации.\n\n## Предельное число узлов\n\nДля прохождения валидации [schema](/ru/enterprise-server@3.18/graphql/guides/introduction-to-graphql#schema) все API GraphQL [calls](/ru/enterprise-server@3.18/graphql/guides/forming-calls-with-graphql) должны соответствовать следующим стандартам:\n\n* Клиенты должны предоставить аргумент `first` или `last` по любому [связи](/ru/enterprise-server@3.18/graphql/guides/introduction-to-graphql#connection).\n* Значения `first` и `last` должны находиться в пределах 1–100.\n* Отдельные звонки не могут запрашивать более 500 000 [узлов](/ru/enterprise-server@3.18/graphql/guides/introduction-to-graphql#node).\n\n### Подсчет узлов в вызове\n\nВ этих двух примерах показано, как вычислить общее количество узлов в вызове.\n\n1. Простой запрос:\n\n   <pre>query {\n     viewer {\n       repositories(first: <span class=\"redbox\">50</span>) {\n\nedges {\nrepository:node {\nname\n\nissues(first: <span class=\"greenbox\">10</span>) {\ntotalCount\nedges {\nnode {\ntitle\nbodyHTML\n}\n}\n}\n}\n}\n}\n}\n}</pre>\n\nРасчет:\n\n   <pre><span class=\"redbox\">50</span>         = 50 repositories\n    +\n   <span class=\"redbox\">50</span> x <span class=\"greenbox\">10</span>  = 500 repository issues\n\n= 550 total nodes</pre>\n\n1. Сложный запрос:\n\n   <pre>query {\n     viewer {\n       repositories(first: <span class=\"redbox\">50</span>) {\n\nedges {\nrepository:node {\nname\n\npullRequests(first: <span class=\"greenbox\">20</span>) {\nedges {\npullRequest:node {\ntitle\n\ncomments(first: <span class=\"bluebox\">10</span>) {\nedges {\ncomment:node {\nbodyHTML\n}\n}\n}\n}\n}\n}\n\nissues(first: <span class=\"greenbox\">20</span>) {\ntotalCount\nedges {\nissue:node {\ntitle\nbodyHTML\n\ncomments(first: <span class=\"bluebox\">10</span>) {\nedges {\ncomment:node {\nbodyHTML\n}\n}\n}\n}\n}\n}\n}\n}\n}\n\n```\n   followers(first: <span class=\"bluebox\">10</span>) {\n```\n\nedges {\nfollower:node {\nlogin\n}\n}\n}\n}\n}</code></pre>\n\nРасчет:\n\n   <pre><span class=\"redbox\">50</span>              = 50 repositories\n    +\n   <span class=\"redbox\">50</span> x <span class=\"greenbox\">20</span>       = 1,000 pullRequests\n    +\n   <span class=\"redbox\">50</span> x <span class=\"greenbox\">20</span> x <span class=\"bluebox\">10</span> = 10,000 pullRequest comments\n    +\n   <span class=\"redbox\">50</span> x <span class=\"greenbox\">20</span>       = 1,000 issues\n    +\n   <span class=\"redbox\">50</span> x <span class=\"greenbox\">20</span> x <span class=\"bluebox\">10</span> = 10,000 issue comments\n    +\n   <span class=\"bluebox\">10</span>              = 10 followers\n\n= 22,060 total nodes</pre>\n\n## Стратегии оптимизации запросов\n\n* **Ограничение количества объектов**: используйте меньшие значения для `first` или `last` аргументов и размыкайтесь по результатам.\n* **Уменьшите глубину** запроса: не запрашивайте глубоко вложенные объекты, если это не необходимо.\n* **Результаты** фильтрации: используйте аргументы для фильтрации данных и возврата только необходимых данных.\n* **Разделение больших запросов**: разбиение сложных запросов на несколько простых запросов.\n* **Запрос только обязательных полей: выберите только нужные поля**, а не запрос всех доступных полей.\n\nСледуя этим стратегиям, вы можете снизить вероятность попадания ограничений ресурсов и повысить производительность и надежность запросов API."}