Articles

Idempotente

Um método HTTP é idempotente se um idêntico pedido pode ser feito uma vez ou várias vezes em uma linha com o mesmo efeito, enquanto deixando o servidor no mesmo estado. Em outras palavras, um método idempotente não deve ter quaisquer efeitos colaterais (exceto para manter estatísticas). Implementado corretamente, o GETHEADPUT e DELETE métodos são idempotentes, mas não o POST método. Todos os métodos seguros também são idempotentes.

Para ser idempotente, apenas o back-end do estado do servidor é considerado, o código de status retornado por cada pedido podem diferir: a primeira chamada de um DELETE provavelmente retornará um 200, enquanto aqueles sucessivas provavelmente retornará um 404. Outra implicação doDELETE ser idempotente é que os desenvolvedores não devem implementar APIs RESTful com uma funcionalidade de delete da última entrada usando o método DELETE.

Note que a idempotência de um método não é garantida pelo servidor e algumas aplicações podem quebrar incorretamente a restrição de idempotência.

GET /pageX HTTP/1.1 é idempotente. Chamado várias vezes em uma linha, o cliente obtém os mesmos resultados:

GET /pageX HTTP/1.1GET /pageX HTTP/1.1GET /pageX HTTP/1.1GET /pageX HTTP/1.1

POST /add_row HTTP/1.1 não é idempotente; se ele é chamado várias vezes, ele adiciona várias linhas:

POST /add_row HTTP/1.1POST /add_row HTTP/1.1 -> Adds a 2nd rowPOST /add_row HTTP/1.1 -> Adds a 3rd row

DELETE /idX/delete HTTP/1.1 é idempotente, mesmo se o código de status retornado pode alterar entre as solicitações:

DELETE /idX/delete HTTP/1.1 -> Returns 200 if idX existsDELETE /idX/delete HTTP/1.1 -> Returns 404 as it just got deletedDELETE /idX/delete HTTP/1.1 -> Returns 404

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *