PATCH
Les requêtes décrivent un ensemble d'opérations à appliquer à une ressource. Si vous appliquez deux fois le même ensemble d'opérations à la même ressource, le résultat risque de ne pas être identique. C'est parce que vous définissez les opérations. En d'autres termes, vous devez définir les règles de fusion .
N'oubliez pas qu'une PATCH
demande peut être utilisée pour patcher des ressources dans de nombreux formats différents, pas seulement JSON.
Ainsi, une PATCH
demande peut être idempotente si vous définissez les règles de fusion comme étant idempotentes .
Exemple idempotent:
// Original resource
{
name: 'Tito',
age: 32
}
// PATCH request
{
age: 33
}
// New resource
{
name: 'Tito',
age: 33
}
Exemple non idempotent:
// Original resource
{
name: 'Tito',
age: 32
}
// PATCH request
{
$increment: 'age'
}
// New resource
{
name: 'Tito',
age: 33
}
Dans le deuxième exemple, j'ai utilisé une syntaxe "comme Mongo" que j'ai créée pour incrémenter un attribut. Clairement, cela n’est pas idempotent, car l’envoi de la même demande plusieurs fois donnerait des résultats différents à chaque fois.
Maintenant, vous vous demandez peut-être si l’utilisation d’une telle syntaxe est valide. Selon les standards , c'est:
La différence entre les requêtes PUT et PATCH est reflétée dans la façon dont le serveur traite l'entité incluse pour modifier la ressource identifiée par l'URI de demande. Dans une demande PUT, l'entité incluse est considérée comme une version modifiée de la ressource stockée sur le serveur d'origine et le client demande le remplacement de la version stockée. Cependant, avec PATCH, l'entité incluse contient un ensemble d'instructions décrivant la manière dont une ressource résidant actuellement sur le serveur d'origine doit être modifiée pour produire une nouvelle version.
Et vous vous demandez peut-être s'il est reposant d'utiliser les PATCH
demandes de cette façon, et de nombreuses personnes considèrent que non, voici une bonne réponse avec de nombreux commentaires sur le sujet.
{"name": "bendjamin franklin"}