Kasowanie/zmiana statusu zasobu - PUT czy DELETE

0

Hej mam małe pytanko
Robię sobie backend w FAST API - i chciałbym mieć endpoint który kasuje mi wpis.
Tylko, że te "kasowanie" to tak naprawdę zmiana statusu na "Usunięty", wpis w rzeczywistości nie jest kasowany (tylko tak jakby ukrywany przed userem)

Czy powinienem użyć czasownika DELETE czy PUT?
Dodatkowo powiem, że kasowanie jest na podstawie parametrów przesłanych w body

2

Tylko, że te "kasowanie" to tak naprawdę zmiana statusu na "Usunięty", wpis w rzeczywistości nie jest kasowany (tylko tak jakby ukrywany przed userem)

Moim zdaniem: byle było konsekwente
jeśli delete, to późniejsze próby GET mają dawać 404 itd
I odwrotnie, jesli (np w trybie admina) jednak chcesz to widzieć, to ...

pytam521 napisał(a):

Dodatkowo powiem, że kasowanie jest na podstawie parametrów przesłanych w body

To otwiera na nowo dywagacje o czasownik (a samo twoje zdanie jest nieprecyzyjne)
Dalej jest nie wykloczone DELETE, możesz odpowiadać kodami 3xx, 4xx, ale można w tym widzieć specyficzną aktualizację

2

The HTTP PUT request method creates a new resource or replaces a representation of the target resource with the request payload.

Czemu PUT?

Bardziej POST vs DELETE, a który z nich wybierzesz? możesz rzucić kostką do gry, będzie szybciej, a rezultat taki sam jak po miesiącu dyskusji na 4p

3
pytam521 napisał(a):

wpis w rzeczywistości nie jest kasowany (tylko tak jakby ukrywany przed userem)

Tylko że to jest szczegół implementacyjny. A ty przecież projektujesz API a więc ukrywasz implementację

5

To zależy :) Jeśli implementujesz typowy wzorzec "soft delete" i użytkownik nie ma możliwości cofnięcia usunięcia (zasób znika na zawsze), to z jego perspektywy po prostu jest to kasowanie, a więc DELETE.
Natomiast jeśli jest to faktycznie ukrywanie, i jest możliwość cofnięcia tego przez użytkownika, to bardziej PUT.

1

użytkownik nie ma możliwości cofnięcia usunięcia

Wydaje mi się, że użytkownik nie powinien wiedzieć, jak to jest technicznie zrobione. Tak samo jak raczej nie powinien (zwykły user, a nie jakiś admin czy osoba ze stosownymi uprawnieniami) mieć możliwości cofania kasowania. A jakby było takie coś, to i tak powtarzam - taki administrator systemu i tak nie interesuje się, czy to jest soft-delete czy jakkolwiek inaczej zaimplementowane. Nawet jakby miał przycisk (czy jakiegoś checkboxa "active") do cofania usunięcia to i tak nie ma dla użytkownika znaczenia, jak to usuwanie (albo jego cofnięcie) jest zakodowane.

Także decyzja PUT/DELETE/COKOLWIEK nie ma nic wspólnego z tym, kto i jak będzie tego używać. Nie mieszajmy szczegółów implementacji API z UI aplikacji.

1 użytkowników online, w tym zalogowanych: 0, gości: 1