Bill Venners: Em sua postagem no blog intitulada "Por que o REST falhou", você disse que precisamos dos quatro verbos HTTP - GET, POST, PUT e DELETE - e lamentou que os fornecedores de navegadores apenas GET e POST. "Por que precisamos dos quatro Por que GET e POST não são suficientes?
Elliotte Rusty Harold: Existem quatro métodos básicos no HTTP: GET, POST, PUT e DELETE. GET é usado na maioria das vezes. É usado para qualquer coisa segura, que não cause efeitos colaterais. O GET pode ser marcado, armazenado em cache, vinculado a, passado por um servidor proxy. É uma operação muito poderosa, uma operação muito útil.
O POST, por outro lado, é talvez a operação mais poderosa. Pode fazer qualquer coisa. Não há limites para o que pode acontecer e, como resultado, você deve ter muito cuidado com isso. Você não adiciona aos favoritos. Você não o armazena em cache. Você não a busca previamente. Você não faz nada com um POST sem perguntar ao usuário. Você quer fazer isso? Se o usuário pressionar o botão, você poderá POSTAR algum conteúdo. Mas você não verá todos os botões de uma página e começará a pressioná-los aleatoriamente. Por outro lado, os navegadores podem olhar para todos os links da página e buscá-los previamente, ou aqueles que eles acham que provavelmente serão seguidos a seguir. De fato, alguns navegadores, extensões do Firefox e várias outras ferramentas tentaram fazer isso em um ponto ou outro.
PUT e DELETE estão no meio entre GET e POST. A diferença entre PUT ou DELETE e POST é que PUT e DELETE são * idempotentes, enquanto POST não é. PUT e DELETE podem ser repetidos, se necessário. Digamos que você esteja tentando fazer upload de uma nova página para um site. Digamos que você queira criar uma nova página em http://www.example.com/foo.html, para que você digite seu conteúdo e coloque-o nesse URL. O servidor cria essa página no URL que você fornece. Agora, vamos supor que, por algum motivo, sua conexão de rede fique inoperante. Você não tem certeza, a solicitação foi concluída ou não? Talvez a rede esteja lenta. Talvez houvesse um problema no servidor proxy. Portanto, não há problema em tentar de novo ou de novo - quantas vezes você quiser. Porque COLOCAR o mesmo documento no mesmo URL dez vezes não será diferente de colocá-lo uma vez. O mesmo vale para DELETE. Você pode excluir algo dez vezes e é o mesmo que excluí-lo uma vez.
Por outro lado, o POST, pode causar algo diferente a cada vez. Imagine que você está saindo de uma loja online pressionando o botão comprar. Se você enviar a solicitação POST novamente, poderá acabar comprando tudo no seu carrinho pela segunda vez. Se você o enviar novamente, você o comprará pela terceira vez. É por isso que os navegadores precisam ter muito cuidado ao repetir as operações do POST sem o consentimento explícito do usuário, porque o POST pode causar duas coisas se você fizer isso duas vezes, três coisas se você fizer isso três vezes. Com PUT e DELETE, há uma grande diferença entre zero pedidos e um, mas não há diferença entre um pedido e dez.
Por favor, visite o URL para mais detalhes. http://www.artima.com/lejava/articles/why_put_and_delete.html
Atualizar:
Métodos idempotentes
idempotentes Um método HTTP idempotente é um método HTTP que pode ser chamado várias vezes sem resultados diferentes. Não importa se o método é chamado apenas uma ou dez vezes. O resultado deve ser o mesmo. Novamente, isso se aplica apenas ao resultado, não ao próprio recurso. Isso ainda pode ser manipulado (como um registro de data e hora da atualização, desde que essas informações não sejam compartilhadas na representação de recurso (atual)).
Considere os seguintes exemplos:
a = 4;
a ++;
O primeiro exemplo é idempotente: não importa quantas vezes executemos essa instrução, a sempre será 4. O segundo exemplo não é idempotente. A execução disso 10 vezes resultará em um resultado diferente da execução 5 vezes. Como os dois exemplos estão alterando o valor de a, ambos são métodos não seguros.