PATCH
żądania opisują zestaw operacji, które mają być zastosowane do zasobu, jeśli zastosujesz ten sam zestaw operacji dwa razy do tego samego zasobu, wynik może być inny. Jest tak, ponieważ definiowanie operacji zależy od Ciebie. Innymi słowy, musisz zdefiniować reguły łączenia .
Pamiętaj, że PATCH
prośba może być wykorzystana do łatania zasobów w wielu różnych formatach, nie tylko w JSON.
Dlatego PATCH
żądanie może być idempotentne, jeśli zdefiniujesz reguły scalania jako idempotentne .
Idempotentny przykład:
// Original resource
{
name: 'Tito',
age: 32
}
// PATCH request
{
age: 33
}
// New resource
{
name: 'Tito',
age: 33
}
Przykład nie idempotentny:
// Original resource
{
name: 'Tito',
age: 32
}
// PATCH request
{
$increment: 'age'
}
// New resource
{
name: 'Tito',
age: 33
}
W drugim przykładzie użyłem składni „Mongo like”, którą zrekompensowałem do zwiększenia atrybutu. Oczywiście nie jest to idempotentne, ponieważ wielokrotne wysyłanie tego samego żądania spowodowałoby za każdym razem inne wyniki.
Teraz możesz się zastanawiać, czy użycie takiej wymyślonej składni jest prawidłowe. Zgodnie ze standardami jest to:
Różnica między żądaniami PUT i PATCH znajduje odzwierciedlenie w sposobie, w jaki serwer przetwarza encję zamkniętą w celu zmodyfikowania zasobu identyfikowanego przez identyfikator URI żądania. W żądaniu PUT załączony obiekt jest uważany za zmodyfikowaną wersję zasobu przechowywanego na serwerze źródłowym, a klient żąda zastąpienia zapisanej wersji. Jednak w PATCH dołączona jednostka zawiera zestaw instrukcji opisujących, jak należy obecnie zmodyfikować zasób znajdujący się na serwerze źródłowym, aby utworzyć nową wersję.
Być może zastanawiasz się również, czy korzystanie z żądań w ten sposób jest spokojnePATCH
, a wiele osób uważa, że tak nie jest, oto dobra odpowiedź z dużą ilością komentarzy na ten temat.
{"name": "bendjamin franklin"}