Recursos Caros em API: usar nonce ou idempotência?
Olá comunidade incrível de desenvolvedores!
Estou atualmente envolvido em um projeto que envolve a implementação de uma API e me deparei com uma decisão crucial: optar por Nonce ou Idempotência para lidar com recursos caros (Consumo de tempo/hora computacional). Gostaria de saber a opinião da galera por aqui sobre essas abordagens.
Para os mais leigos no assunto, deixe-me fazer um breve resumo:
[Nonce]
O que é: Um número usado uma única vez em uma comunicação, geralmente para evitar a repetição de requisições.
Prós: Ajuda a evitar ataques de repetição, garantindo que uma solicitação específica só seja processada uma vez.
Contras: Adiciona complexidade ao sistema e pode causar problemas de sincronização se não for gerenciado corretamente - ex: usuário abrir duas abas com mesma view.
[Idempotência]
O que é: Uma propriedade em que uma operação produz o mesmo resultado, independentemente de quantas vezes é executada.
Prós: Facilita a reexecução de operações sem efeitos colaterais inesperados. Útil em cenários de falha de rede ou retry de requisições.
Contras: Nem todas as operações podem ser tornadas verdadeiramente idempotentes, e algumas podem exigir manipulações adicionais e adição de muita regra de negócio.
Então a pergunta pode até ser outra: Nonce pode atingir idempotência de maneira "genérica"?
Agora, gostaria de ouvir a experiência e opinião de vocês. Qual dessas abordagens vocês preferem ao lidar com recursos caros em uma API? Já enfrentaram desafios específicos com uma ou outra? Ou têm alguma terceira abordagem favorita ou mais inteligente?
Vamos compartilhar conhecimento e enriquecer nossa compreensão coletiva! Valeu turma 🚀