У меня есть следующие 4 представления на основе классов в DRF для выполнения операции CRUD для модели с именем Trips.
from rest_framework import generics
class TripCreateView(CreateAPIView):
#code that creates a Trip
class TripListView(ListAPIView):
#code that lists Trips
class TripDetailView(RetrieveAPIView):
#code that gives details of a Trip
class TripUpdateView(UpdateAPIView):
#code that updates a particular trip details
class TripDeleteView(DestroyAPIView):
#code that deletes an instance
Теперь, чтобы связать URL-адреса с каждым представлением, мой urls.py выглядитнапример:
urlpatterns = [
url(r'^trip/$', TripCreateView.as_view()),
url(r'^trip/list/$',TripListView.as_view()),
url(r'^trip/(?P<pk>[0-9]+)/detail/$', TripDetailView.as_view()),
url(r'^trip/(?P<pk>[0-9]+)/update/$', TripUpdateView.as_view()),
url(r'^trip/(?P<pk>[0-9]+)/delete/$', TripDeleteView.as_view())
]
Это работает, как и ожидалось. Однако, как видно, эти конечные точки API плохо спроектированы, поскольку в URI также есть метод http.Конечные точки RESTFUL API не имеют метода HTTP в URI, как это выглядит следующим образом:
Endpoint HTTP METHOD Result
trips GET Gets all Trips
trips/:id GET Gets details of a Trip
trips POST Creates a Trip
trips/:id PUT Updates a Trip
trips:/id DELETE Deletes a Trip
Я знаю, что Viewsets могут помочь достичь этого, но я не могу их использовать из-за некоторых других ограничений. Может ли это бытьдостигается только с помощью представлений на основе классов, которые я использую?