Sobes.tech
Middle

Todos os métodos HTTP são idempotentes?

sobes.tech IA

Resposta da IA

Não, nem todos os métodos HTTP são idempotentes.

Idempotência significa que, se fizer uma mesma solicitação várias vezes com os mesmos parâmetros, o resultado no lado do servidor não mudará após a primeira execução bem-sucedida.

Os principais métodos HTTP e sua idempotência:

Método É idempotente? Propósito
GET Sim Obter dados
HEAD Sim Obter cabeçalhos de resposta
PUT Sim Criar ou substituir completamente um recurso
DELETE Sim Excluir um recurso
POST Não Enviar dados para criar um recurso ou realizar uma ação
PATCH Não Atualização parcial de um recurso

POST e PATCH não são idempotentes porque cada execução pode levar à criação de um novo recurso ou alterar o estado do recurso dependendo da implementação, o que não é único após a primeira execução bem-sucedida. Por exemplo, executar várias vezes uma solicitação POST para criar um usuário geralmente resultará na criação de vários usuários.

Exemplo de POST não idempotente:

{
  "username": "testuser"
}

Enviar essa solicitação POST pode criar um novo usuário com username: "testuser" a cada chamada.

Exemplo de PUT idempotente:

{
  "id": 123,
  "status": "completed"
}

Enviar essa solicitação PUT ao recurso com ID 123 definirá seu status como "completed". A execução repetida não alterará o status se já estiver em "completed".