PATCH
las solicitudes describen un conjunto de operaciones que se aplicarán a un recurso; si aplica el mismo conjunto de operaciones dos veces al mismo recurso, el resultado puede no ser el mismo. Esto se debe a que definir las operaciones depende de usted. En otras palabras, debe definir las reglas de fusión .
Recuerde que una PATCH
solicitud podría usarse para parchear recursos en muchos formatos diferentes, no solo JSON.
Por lo tanto, una PATCH
solicitud puede ser idempotente si define las reglas de fusión como idempotentes .
Ejemplo idempotente:
// Original resource
{
name: 'Tito',
age: 32
}
// PATCH request
{
age: 33
}
// New resource
{
name: 'Tito',
age: 33
}
Ejemplo no idempotente:
// Original resource
{
name: 'Tito',
age: 32
}
// PATCH request
{
$increment: 'age'
}
// New resource
{
name: 'Tito',
age: 33
}
En el segundo ejemplo utilicé una sintaxis "Mongo like" que inventé para incrementar un atributo. Claramente, esto no es idempotente, ya que enviar la misma solicitud varias veces daría como resultado resultados diferentes cada vez.
Ahora puede que se pregunte si el uso de una sintaxis inventada es válida. Según las normas , es:
La diferencia entre las solicitudes PUT y PATCH se refleja en la forma en que el servidor procesa la entidad adjunta para modificar el recurso identificado por el URI de solicitud. En una solicitud PUT, la entidad adjunta se considera una versión modificada del recurso almacenado en el servidor de origen, y el cliente solicita que se reemplace la versión almacenada. Sin embargo, con PATCH, la entidad adjunta contiene un conjunto de instrucciones que describen cómo se debe modificar un recurso que actualmente reside en el servidor de origen para producir una nueva versión.
Y es posible que también se pregunte si es tranquilo usar las PATCH
solicitudes de esta manera, y muchas personas consideran que no, aquí hay una buena respuesta con muchos comentarios sobre el tema.
{"name": "bendjamin franklin"}