2
respostas

quanto ao PUT ser idempotente

Estranhei em saber que o PUT seria idempotente, pois dependendo da alteracao a ser feita o efeito seria o mesmo que por exemplo um post, pois alteraria a imagem anterior no servidor. Exemplo , se altero a qtd de 1 para 2 , sem problemas, posso executar "N" vezes que o resultado é o mesmo.Mas se ao inves de trocar , eu realizar a alteracao SOMANDO UM VALOR A QTD ? exemplo: qtd + 1. Se executra "N" vezes a operacao de alteracao, teria um serio problema , da mesma forma que teria em um POST.

2 respostas

Acredito que seja pensando na implementação idealizada do put, que você somente iria subistituir pelo valor informado. E mesmo que esse dado sofresse uma alteração antes de persistir o dado, o resultado dessa alteração deveria ser sempre a mesma.

Ex, você vai salvar no banco usuário e senha critografada. { "user" : "admin", "pass": "123" } A senha ao ser criptografada pelo algoritmo md5 vai gerar sempre {"user" : "admin", "pass": "202cb962ac59075b964b07152d234b70" }

Mas, se por acaso você implementasse esse seu exemplo, você não garante que a sua api segue todos os padrões de uma api rest completa.

Amanda, Grato pelo retorno. Só que as definiçoes que tenho me parecem claras quanto a idempotencia:

"An idempotent HTTP method is an HTTP method that can be called many times without different outcomes. It would not matter if the method is called only once, or ten times over. The result should be the same."

"Idempotence essentially means that the result of a successfully performed request is independent of the number of times it is executed. For example, in arithmetic, adding zero to a number is an idempotent operation."

Que confere com o apresentado pelo instrutor na sala de aula.Pelo menos, eu não reparei em nenhuma definição sobre o assunto onde deve-se ter como pre-requisito um padrão especifico , mesmo sendo aconselhavel e de boa pratica.