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".