OK, então não se trata de idempotência. Mas então uma pergunta de acompanhamento pode ser: e se ainda optarmos por usar o 204 no DELETE subsequente? Tudo bem?
Boa pergunta. A motivação é compreensível: permitir que o cliente ainda atinja o resultado pretendido, sem se preocupar com o tratamento de erros. Eu diria que retornar 204 no DELETE subsequente é uma "mentira branca" do lado do servidor amplamente inofensiva, que o lado do cliente não notará imediatamente a diferença. É por isso que existem ~ 25% de pessoas fazendo isso na natureza e, aparentemente, ainda funciona. Lembre-se de que essa mentira pode ser considerada semanticamente estranha, porque GET /non-exist
retorna 404, mas DELETE /non-exist
dá 204, nesse ponto o cliente descobriria que seu serviço não está totalmente em conformidade com a seção 6.5.4 404 Não encontrado .
Mas quero ressaltar que, a maneira pretendida sugerida pela RFC 7231, ou seja, retornando 404 no DELETE subsequente, não deve ser um problema em primeiro lugar. 3x mais desenvolvedores escolheram fazer isso, e você já ouviu um incidente grave ou reclamação causada por um cliente não conseguir lidar com o 404? Presumivelmente, não, e isso ocorre porque, qualquer cliente decente que implemente HTTP DELETE (ou qualquer método HTTP, nesse caso), não assumirá cegamente que o resultado sempre será bem-sucedido 2xx. E então, assim que o desenvolvedor começar a considerar o tratamento de erros, o 404 Not Found seria um dos primeiros erros a serem lembrados. Nesse ponto, ele provavelmente chegaria a uma conclusão de que é semanticamente seguro para uma operação HTTP DELETE ignorar um erro 404. E eles fizeram isso.