|||

Django – #32 – REST API cz. 8 – RetrieveDestroyAPIView

Wprowadzenie.

W poprzednich wpisać poznaliśmy między innymi, jak odczytywać dane oraz jak tworzyć nowe rekordy w bazie danych. Kolejną funkcjonalnością, którą należy znać i przedstawię w tym wpisie, jest usuwanie rekordów z bazy danych poprzez API oraz przy okazji odczytywanie pojedynczego rekordu poprzed jego ID.

  1. Django REST API cz. 1– Tworzenie nowego projektu 
  2. Django REST API cz. 2 – ListAPIView 
  3. Django REST API cz. 3 – Wbudowana strona logowania
  4. Django REST API cz. 4 – Widoki generyczne
  5. Django REST API cz. 5 – ListCreateAPIView i konfiguracja dostępu
  6. Django REST API cz. 6 – Uszczegóławianie odpowiedzi  
  7. Django REST API cz. 7 – Określenie z góry wartości danych
  8. Django REST API cz. 8 – RetrieveDestroyAPIView ⇐
  9. Django REST API cz. 9 – RetrieveUpdateAPIView
  10. Django REST API cz. 10 – Nadpisywanie zachowań metod przed/po operacji zapisu/usuwania
  11. Django REST API cz. 11 – Rejestracja nowego użytkownika poprzez API  
  12. Django REST API cz. 12 – Uwierzytelnianie przy pomocy Tokena 
  13. Django REST API cz. 13 – Generowanie tokena dla istniejących użytkowników

Zakres artykułu.

  • Usuwanie rekordów z bazy danych – RetrieveDestroyAPIView

Usuwanie rekordów z bazy danych – RetrieveDestroyAPIView

Wyobraźmy sobie taką sytuacją, że popełniliśmy błąd i wypożyczyliśmy nie tę książkę, którą chcieliśmy, lecz już wykonaliśmy metodę POST. W takim przypadku powinniśmy mieć możliwość usunięcia takiego wypożyczenia. Z pomocą przyjdzie nam kolejna z klas generycznych, którą może być na przykład RetrieveDestroyAPIView.

W pierwszym kroku przejdźmy do pliku z widokami views.py i stwórzmy klasę nowego widoku class BorrowRetrieveDestroy(generics.RetrieveDestroyAPIView).

Następnie stwórzmy ścieżkę do nowo utworzonego widoku path(’api/borrows/<int:pk>’, views.BorrowRetrieveDestroy.as_view()). W ścieżce wprowadzamy możliwość wpisania zmiennej typu int, która będzie wskazywała na Primary Key (pk) wypożyczenia.

W tej chwili jesteśmy już w stanie przetestować naszą nową funkcjonalność. W przeglądarce wpiszmy na przykład następujący adres http://127.0.0.1:8000/api/borrows/5, z tym że dla tego przykładu wypożyczenie o id 5 musi istnieć. W związku z tym albo dodajmy nowe rekordy, albo zmieńmy id na takie, które istnieje w naszej bazie danych. Rekordy, jakie znajdują się z bazie danych sprawdzimy pod adresem http://127.0.0.1:8000/api/borrows.

Wynik dla adresu http://127.0.0.1:8000/api/borrows, zwróci nam wszystkie dostępne rekordy w bazie danych.

Wynik dla adresu http://127.0.0.1:8000/api/borrows/5, zwróci nam rekord o id 5.  

Jak możemy zobaczyć, w miejscu dozwolonych metod pojawiła nam się metoda DELETE oraz pojawił się dodatkowy czerwony przycisk DELETE

Po wciśnięciu przycisku DELETE strona zapyta nas jeszcze o potwierdzenie naszego działania. Po potwierdzeniu otrzymamy następujący efekt.

W celu sprawdzenia, czy usunięcie przebiegło pomyślnie, przejdźmy jeszcze na stronę  http://127.0.0.1:8000/api/borrows.

Jak możemy zobaczyć, usunięcie przebiegło pomyślnie. Obecnie występuje jeszcze jeden problem, a mianowicie każdy użytkownik ma możliwość usuwania rekordów innych użytkowników, co warto byłoby ograniczyć. 

Przejdźmy zatem do pliku z widokami views.py i dokonajmy modyfikacji nowo utworzonego widoku w następujący sposób. 

Przetestujmy, czy możemy usunąć wypożyczenie innego użytkownika.

Jak możemy zobaczyć w momencie potwierdzenia, otrzymaliśmy komunikat, że nie jesteśmy właścicielami tego rekordu.

Przejdźmy jeszcze na stronę http://127.0.0.1:8000/api/borrows, żeby upewnić się, że dane nie zostały usunięte. 

Jeżeli chcecie zapoznać się ze szczegółowymi informacjami o klasie RetrieveDestroyAPIView, możecie to uczynić, przechodząc pod ten link.

  1. Django REST API cz. 1– Tworzenie nowego projektu 
  2. Django REST API cz. 2 – ListAPIView 
  3. Django REST API cz. 3 – Wbudowana strona logowania
  4. Django REST API cz. 4 – Widoki generyczne
  5. Django REST API cz. 5 – ListCreateAPIView i konfiguracja dostępu
  6. Django REST API cz. 6 – Uszczegóławianie odpowiedzi  
  7. Django REST API cz. 7 – Określenie z góry wartości danych
  8. Django REST API cz. 8 – RetrieveDestroyAPIView ⇐
  9. Django REST API cz. 9 – RetrieveUpdateAPIView
  10. Django REST API cz. 10 – Nadpisywanie zachowań metod przed/po operacji zapisu/usuwania
  11. Django REST API cz. 11 – Rejestracja nowego użytkownika poprzez API  
  12. Django REST API cz. 12 – Uwierzytelnianie przy pomocy Tokena 
  13. Django REST API cz. 13 – Generowanie tokena dla istniejących użytkowników

Autor artykułu
Dominik Bednarski

Podobne wpisy

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *