Skip to main content

Esta versão do GitHub Enterprise Server será descontinuada em 2026-03-17. Nenhum lançamento de patch será feito, mesmo para questões críticas de segurança. Para obter melhor desempenho, segurança aprimorada e novos recursos, atualize para a última versão do GitHub Enterprise Server. Para obter ajuda com a atualização, entre em contato com o suporte do GitHub Enterprise.

Limites de taxas e limites de consultas para a API GraphQL

A API do GraphQL de GitHub tem limitações de proteção contra chamadas excessivas ou abusivas para os servidores de GitHub.

Limite da taxa primária

Os limites de taxa estão desabilitados por padrão no GitHub Enterprise Server. Fale com o administrador do site para confirmar os limites de velocidade da sua instância.

Se você for um administrador de site, poderá definir limites de taxa para a sua instância. Para saber mais, confira Como configurar limites de taxa.

Se você estiver desenvolvendo um aplicativo para usuários ou organizações fora da sua instância, os limites de taxa padrão do serão aplicados. Para mais informações, confira Limites de taxas e limites de consultas para a API GraphQL na documentação do GitHub Free.

Limite do nó

Para serem aprovados na validação de esquema, todas as chamadas à API do GraphQL precisam atender a estes padrões:

  • Os clientes precisam fornecer um argumento first ou last em qualquer conexão.
  • Os valores de firste last precisam estar entre 1 e 100.
  • As chamadas individuais não podem solicitar mais de 500 mil nós no total.

Calculando os nós em uma chamada

Estes dois exemplos mostram como calcular os nós totais em uma chamada.

  1. Consulta simples:

    query {
      viewer {
        repositories(first: 50) {
          edges {
            repository:node {
              name
    
              issues(first: 10) {
                totalCount
                edges {
                  node {
                    title
                    bodyHTML
                  }
                }
              }
            }
          }
        }
      }
    }

    Cálculo:

    50         = 50 repositories
     +
    50 x 10  = 500 repository issues
    
                = 550 total nodes
  2. Consulta complexa:

    query {
      viewer {
        repositories(first: 50) {
          edges {
            repository:node {
              name
    
              pullRequests(first: 20) {
                edges {
                  pullRequest:node {
                    title
    
                    comments(first: 10) {
                      edges {
                        comment:node {
                          bodyHTML
                        }
                      }
                    }
                  }
                }
              }
    
              issues(first: 20) {
                totalCount
                edges {
                  issue:node {
                    title
                    bodyHTML
    
                    comments(first: 10) {
                      edges {
                        comment:node {
                          bodyHTML
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
    
        followers(first: 10) {
          edges {
            follower:node {
              login
            }
          }
        }
      }
    }

    Cálculo:

    50              = 50 repositories
     +
    50 x 20       = 1,000 pullRequests
     +
    50 x 20 x 10 = 10,000 pullRequest comments
     +
    50 x 20       = 1,000 issues
     +
    50 x 20 x 10 = 10,000 issue comments
     +
    10              = 10 followers
    
                     = 22,060 total nodes

Estratégias de otimização de consulta

  •         **Limitar o número de objetos**: use valores menores para argumentos `first` ou `last` e paginar pelos resultados.
    
  •         **Reduzir a profundidade da consulta**: evite solicitar objetos profundamente aninhados, a menos que necessário.
    
  •         **Resultados do filtro**: use argumentos para filtrar dados e retornar apenas o que você precisa.
    
  •         **Dividir consultas grandes**: divida consultas complexas em várias consultas mais simples.
    
  •         **Solicitar apenas os campos necessários**: selecione apenas os campos de que você precisa, em vez de solicitar todos os campos disponíveis.
    

Seguindo essas estratégias, você pode reduzir a probabilidade de atingir os limites de recursos e melhorar o desempenho e a confiabilidade de suas solicitações de API.