• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Rest API metoda DELETE czy koniecznie musi usuwać zasób z bazy danych?

Object Storage Arubacloud
0 głosów
575 wizyt
pytanie zadane 17 kwietnia 2019 w PHP przez `Krzychuu Stary wyjadacz (13,940 p.)
Witam,

czy w metodzie DELETE zamiast usuwania rekordu z bazy danych mogę np zmienić wartość w kolumnie isActive na 0, czy powinienem to raczej dodać do metody PUT?

3 odpowiedzi

+3 głosów
odpowiedź 17 kwietnia 2019 przez Tomek Sochacki Ekspert (227,510 p.)
metody są tylko pewną umową. Technicznie mógłbyś akcję usuwania rekordu zrobić i na GET ale oczywiście nie będzie to dobrą praktyką.

Wystawienie w API metody DELETE informuje jej konsumenta, że tym endpointem z tą metodą może dokonać usunięcia rekordu. Nie interesuje go natomiast jak to wygląda technicznie pod spodem. Możesz usunąć rekord trwale albo zrobić tzw. soft delete, to już zależy od Ciebie, konsumenta endpointu to kompletnie nie interesuje. On oczekuje, że gdy wywoła POST, potem GET to dostanie rekord, a gdy wywoła potem DELETE i znowu GET to rekordu już nie otrzyma. Ale to czy rekord jest nadal w bazie czy nie to już nie ma znaczenia.

A tak na marginesie to w 90% przypadków prawdopodobnie lepszy będzie soft delete. Pamiętaj, że najcenniejsza jest dzisiaj informacja. Dyski, ram itp. możesz w każdej chwili dokupić ale z informacji raz straconej możesz nie odzyskać... Takie trwałe usuwanie może mieć uzasadnienie w jakiś konkretnych sytuacjach ale raczej w BigData, a w mikro bazach gdzie masz kilka czy kilkanaście tysięcy rekordów to nie ma kompletnie sensu.
komentarz 17 kwietnia 2019 przez `Krzychuu Stary wyjadacz (13,940 p.)
dokładnie chce zrobić tak jak napisałeś że gdy wywoła DELETE i potem GET to dostanie błąd że nie odnaleziono rekordu, dziękuje za pomoc
+2 głosów
odpowiedź 17 kwietnia 2019 przez niezalogowany

Do tego powinno stosować się PUT.

Ale jeśli użył byś DELETE i zmienił isActive na 0. Potem użył byś GET z tym samym urlem, żeby pobrać ten sam zasób i w odpowiedzi otrzymał 404, to by to jeszcze można było uznać, że jest to ok.

komentarz 17 kwietnia 2019 przez `Krzychuu Stary wyjadacz (13,940 p.)
chce zrobić dokładnie tak jak napisałeś, dziękuje za pomoc
+1 głos
odpowiedź 17 kwietnia 2019 przez wiktoz Mądrala (7,040 p.)
DELETE po prostu usuwa, a Ty nie chcesz usunąć tego tylko zamienić wartość na 0. To są dwie różne rzeczy.
komentarz 17 kwietnia 2019 przez adrian17 Ekspert (344,860 p.)
DELETE usuwa z punktu widzenia API. Jeśli ustawienie bazodanowo isActive na 0 wygląda dla zewnętrznego użytkownika API tak samo jak usunięcie rekordu, to pasuje.
komentarz 17 kwietnia 2019 przez `Krzychuu Stary wyjadacz (13,940 p.)

@wiktoz, właśnie z tym miałem problem ale mam już napisane w funkcji pobierające że jeżeli jest isActive na 0 to zwraca błąd, czyli tak jakby DELETE będzie usuwać rekord i nie będzie go można pobrać z poziomu API

Podobne pytania

0 głosów
1 odpowiedź 283 wizyt
0 głosów
4 odpowiedzi 2,839 wizyt
0 głosów
2 odpowiedzi 415 wizyt

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...