Limitação de taxa da REST API de entrada

  • Versão de lançamento: Washingtondc
  • Atualizado 1 de fev. de 2024
  • 3 min. de leitura
  • Para evitar solicitações de REST API de entrada excessivas, defina regras que limitem o número de solicitações de REST API de entrada processadas por hora. Você pode criar regras para limitar as solicitações de usuários específicos, usuários com funções específicas ou todos os usuários.

    Nota:
    Conforme as solicitações chegam a uma instância, cada nó mantém uma contagem de limite de taxa por usuário. A cada 30 segundos, a contagem é confirmada no banco de dados. Como resultado, uma regra de limite de taxa pode não entrar em vigor por até 30 segundos.

    Prioridade de limitação de taxa

    Se uma solicitação de REST API de entrada corresponder a várias regras de limite de taxa para o mesmo recurso, a prioridade de limitação de taxa será aplicada da seguinte forma:
    • Regras definidas para Usuário único substituem regras para Todos os usuários e regras para Usuários com função.
    • Regras definidas para Usuários com regras de substituição de função para Todos os usuários.
    Neste exemplo, há quatro regras de limite de taxa para o mesmo recurso de REST API: GET /now/v2/table/incident:
    Regras de Limite de Taxa
    Essas regras de limite de taxa são aplicadas na seguinte ordem:
    1. Limitar incidentes por usuário se aplica ao usuário ITIL, que pode enviar até 10 solicitações por hora.
    2. Limitar incidentes por função de administrador de importação se aplica a cada usuário com a função import_admin. Cada usuário com a função import_admin pode enviar até três solicitações por hora.
    3. Limitar incidentes por função itil se aplica a cada usuário com a função itil. Cada usuário com a função itil pode enviar até cinco solicitações por hora.
    4. Limitar incidentes se aplica a todos os usuários. Cada usuário pode enviar até duas solicitações por hora.

    Quando o usuário ITIL faz a solicitação GET /now/v2/table/incident, a solicitação corresponde aos critérios de três regras: Limit Incidents, Limit Incidents by itil Rolee Limit Incidents by User. Somente a regra Limitar incidentes por usuário é aplicada porque ela tem precedência sobre as outras regras. Como resultado, o usuário ITIL pode enviar no máximo 10 solicitações por hora.

    Se um usuário tiver duas ou mais funções que correspondam aos critérios de várias regras de limitação de taxa para um recurso de REST API, a regra que permite o menor número de solicitações se aplicará às solicitações do usuário para o recurso. Para as regras de exemplo na figura acima, suponha que o usuário Abel Tuter tenha a função import_admin e a função itil. Quando Abel Tuter envia uma solicitação, ela atende aos critérios para a regra Limitar incidentes por função de administrador e Limitar incidentes por função itil. Somente a regra Limitar incidentes por função de administrador é aplicada porque ela permite o menor número de solicitações. Como resultado, Abel Tuter pode enviar no máximo três solicitações por hora.

    Cabeçalhos de resposta da REST API

    Você pode gerar solicitações de REST API de entrada usando o Use o Explorador de REST API ou um cliente HTTP, como o Postman. Se a solicitação corresponder a uma regra de limite de taxa, vários cabeçalhos de resposta HTTP fornecerão informações sobre a limitação de taxa:
    • X-RateLimit-Limit exibe o número de solicitações permitidas por hora.
    • X-RateLimit-Reset exibe a hora do Unix até a próxima redefinição programada.
    • X-RateLimit-Rule exibe o sys_id da regra de limite de taxa que está sendo aplicada.

      Cabeçalhos de resposta de limite de taxa

    Se uma solicitação for negada por exceder o limite de taxa, o sistema retornará um cabeçalho de resposta Tentar após, além dos cabeçalhos de resposta sobre limitação de taxa. O cabeçalho Tentar novamente após a resposta exibe o número de segundos após os quais você pode tentar novamente a solicitação para evitar exceder o limite de taxa. A seguinte resposta de erro é retornada:
    {
        "error": {
            "message": "Rate limit exceeded",
            "detail": "Rate limit of 10 requests per hour for Table API exceeded"
        },
        "status": "failure"
    }

    O status de uma solicitação negada é 429 Solicitaçõesem excesso.

    Status de resposta REST 429 Excesso de solicitações