O que é idempotência
Idempotência é a propriedade de uma ação cuja repetição mantém o mesmo efeito pretendido de uma única aplicação. Definir o estado de uma inscrição como confirmada pode ser idempotente, porque repetir essa definição mantém a inscrição confirmada, sem criar outra inscrição.
Aumentar um contador em uma unidade tem outro comportamento. Executar esse incremento novamente aumenta o total outra vez, mesmo que o conteúdo da chamada seja idêntico ao anterior.
Essa diferença importa quando uma automação precisa repetir trabalho depois de uma falha de comunicação. Você precisa saber se a nova tentativa apenas alcançará o estado esperado ou acrescentará um efeito que já havia acontecido.
Definir um valor e acrescentar um efeito
Uma atualização que define o limite de participantes como vinte pode manter esse valor após várias tentativas equivalentes. Uma atualização que acrescenta vinte vagas, por outro lado, pode aumentar o limite a cada repetição, conforme o contrato implementado.
A idempotência pertence à ação completa que você está avaliando. Se a atualização mantém o mesmo estado, mas também envia uma nova confirmação a cada chamada, o envio precisa de tratamento próprio para não se repetir indevidamente.
A resposta pode mudar
Uma ação idempotente não precisa devolver respostas idênticas. Na exclusão de um recurso, a primeira chamada pode informar que ele foi removido, enquanto a seguinte informa que ele já não existe, preservando o efeito pretendido de ausência.
Os registros técnicos de cada tentativa também podem ser diferentes. Um servidor pode registrar todas as chamadas em logs sem que isso altere a classificação do efeito solicitado ao recurso, conforme a semântica HTTP.
Como isso aparece nos métodos HTTP
A especificação HTTP define PUT, DELETE e os métodos seguros, como GET, como idempotentes. POST e PATCH não recebem essa garantia geral, embora uma API possa implementar ações específicas com comportamento idempotente.
O nome do método não corrige uma implementação que desrespeita seu contrato. Ao integrar um serviço, confira o comportamento documentado e teste o efeito da repetição, principalmente quando a chamada cria registros ou aciona outros sistemas.
Chave e deduplicação são mecanismos relacionados
Uma chave de idempotência pode permitir que o servidor reconheça tentativas da mesma criação. Esse mecanismo depende de suporte, escopo e retenção no destino, e não é obrigatório para toda ação idempotente.
A deduplicação identifica entradas repetidas, mas reconhecer uma entrada não comprova que o trabalho terminou. Uma execução que registrou o evento e falhou antes da ação precisa continuar recuperável.
Como testar o efeito da repetição
Repita a mesma ação sobre o mesmo recurso em um ambiente de teste e compare o estado resultante com o de uma única aplicação. Observe também efeitos adicionais, como arquivos, mensagens e registros criados por etapas seguintes.
Inclua uma interrupção depois da ação e antes de registrar a conclusão, pois esse intervalo produz resultados desconhecidos para o cliente. A recuperação deve demonstrar que o trabalho pendente pode terminar sem acrescentar outro efeito já realizado.
Dúvidas frequentes
Perguntas frequentes sobre Idempotência
- Idempotência exige respostas idênticas?
- Não. A propriedade considera o efeito pretendido da repetição. A resposta pode mudar, como uma exclusão que encontra o recurso na primeira chamada e o encontra ausente na seguinte.
- Toda ação idempotente precisa de uma chave?
- Não. Definir um campo como um valor específico pode ser idempotente pela própria ação. Uma chave é um dos mecanismos usados para reconhecer tentativas da mesma solicitação.
- Uma ação idempotente não altera nada?
- Ela pode alterar o estado. Definir uma inscrição como confirmada muda a inscrição na primeira aplicação, mas repetir a mesma definição não deve criar confirmações adicionais.
- POST e PATCH são sempre idempotentes?
- Não há essa garantia geral para esses métodos. O comportamento de uma ação específica depende do contrato e da implementação, incluindo eventual suporte a chave de idempotência.
Para continuar
Recursos relacionados
Documentação
RFC 9110: métodos idempotentes
Definição de idempotência na semântica HTTP.
Abrir recursoDocumentação
BullMQ: jobs idempotentes
Projeto de tarefas que podem ser repetidas após uma falha.
Abrir recursoAplicação na formação
n8n Experts
A idempotência orienta o tratamento de chamadas repetidas para preservar o efeito esperado da ação no sistema.
Conhecer a formação
Fontes consultadas
Referências deste verbete
Este verbete ajudou você?
Obrigado pela resposta. Ela fica salva apenas neste navegador.