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:

  1. Zasób nie może być przepięty na innego użytkownika. Nigdy.
  2. Zasób nie może zmienić swojego typu. Jeżeli coś zostało utworzone jako X, to po wsze czasy ma być X.
  3. Status, opis i tytuł możemy edytować.

Wymagania:

  1. Całkowity zapis (aktualizacją już istniejącego) zasobu
  2. 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