Powiedzmy, że nasz resource wygląda tak:
{
"id": 1,
"user_id": 3,
"type": 5,
"status": 7,
"title": "Fiz baz",
"description": "Foo bar baz";
}
Założenia:
- Zasób nie może być przepięty na innego użytkownika. Nigdy.
- Zasób nie może zmienić swojego typu. Jeżeli coś zostało utworzone jako X, to po wsze czasy ma być X.
- Status, opis i tytuł możemy edytować.
Wymagania:
- Całkowity zapis (aktualizacją już istniejącego) zasobu
- Aktualizacja statusu zasobu.
Aktualizację statusu zrobiłbym używając
PATCH /resource/1
{ "status": 9 }
Teraz kolej na zapis zasobu. Pytanie, czy skoro nie możemy nadpisać użytkownika i typu, ergo nie nadpisujemy całego zasobu, to powinniśmy również użyć PATCH'a, czy ponieważ wysyłamy wszystkie edytowalne pola na raz (status, tytuł i opis), to w tym wypadku używamy PUT'a?
Innymi słowy, czy jeżeli zasób składa się z dziesięciu pól, ale edytować możemy maksymalnie siedem z nich, to czy przesyłając te wszystkie siedem używacie PUT, czy PATCH?
#akademickiedywagacje