PATCH
Os pedidos descrevem um conjunto de operações a serem aplicadas a um recurso. Se você aplicar o mesmo conjunto de operações duas vezes ao mesmo recurso, o resultado poderá não ser o mesmo. Isso ocorre porque a definição das operações depende de você. Em outras palavras, você precisa definir as regras de mesclagem .
Lembre-se de que uma PATCH
solicitação pode ser usada para corrigir recursos em vários formatos diferentes, não apenas no JSON.
Portanto, uma PATCH
solicitação pode ser idempotente se você definir as regras de mesclagem como idempotentes .
Exemplo idêntico:
// Original resource
{
name: 'Tito',
age: 32
}
// PATCH request
{
age: 33
}
// New resource
{
name: 'Tito',
age: 33
}
Exemplo não idempotente:
// Original resource
{
name: 'Tito',
age: 32
}
// PATCH request
{
$increment: 'age'
}
// New resource
{
name: 'Tito',
age: 33
}
No segundo exemplo, usei uma sintaxe "tipo Mongo" que inventei para incrementar um atributo. Claramente, isso não é idempotente, pois o envio da mesma solicitação várias vezes resultaria em resultados diferentes a cada vez.
Agora você pode estar se perguntando se o uso de uma sintaxe inventada é válida. De acordo com os padrões , é:
A diferença entre as solicitações PUT e PATCH é refletida na maneira como o servidor processa a entidade fechada para modificar o recurso identificado pelo Request-URI. Em uma solicitação PUT, a entidade incluída é considerada uma versão modificada do recurso armazenado no servidor de origem e o cliente está solicitando que a versão armazenada seja substituída. Com PATCH, no entanto, a entidade incluída contém um conjunto de instruções que descrevem como um recurso que atualmente reside no servidor de origem deve ser modificado para produzir uma nova versão.
E você também pode estar se perguntando se é tranqüilo usar PATCH
solicitações dessa maneira e, como muitas pessoas consideram que não são, aqui está uma boa resposta com muitos comentários sobre o problema.
{"name": "bendjamin franklin"}