Конечные точки RestFul API с представлениями на основе классов Django Rest Framework - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть следующие 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 могут помочь достичь этого, но я не могу их использовать из-за некоторых других ограничений. Может ли это бытьдостигается только с помощью представлений на основе классов, которые я использую?

...