Limitação de taxa da REST API de entrada

  • Versão de lançamento: Xanadu
  • Atualizado 1 de ago. 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 atingem 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 ter efeito 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 Regras de substituição de usuário único 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: Limitar incidentes, Limitar incidentes por função itile Limitar incidentes por usuário. 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 correspondentes aos critérios de várias regras de limitação de taxa para um recurso de REST API, a regra que permitir 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 as funções import_admin e itil. Quando Abel Tuter envia uma solicitação, ela atende aos critérios para a regra Limitar incidentes por função de administrador e a regra 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 o tempo Unix até a próxima redefinição programada.
    • X-RateLimit-Rule exibe o sys_id da regra de limite de taxa que está sendo imposta.

      Cabeçalhos de resposta de limite de taxa

    Se uma solicitação for negada porque excede o limite de taxa, o sistema retornará um cabeçalho de resposta Repetir após, além dos cabeçalhos de resposta sobre limitação de taxa. O cabeçalho de resposta Repetir após exibe o número de segundos após o qual 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ções em Excesso.

    Status de resposta REST 429 Excesso de solicitações