URL конечной точки API с <id>или без? - PullRequest
0 голосов
/ 07 января 2019

Какой подход рекомендуется? URL конечной точки API с или без?

/api/orders/<id>/

def post(self, request, id):
    order = get_object_or_404(Order, pk=self.kwargs.get('id'), company=request.user.company)
    ...

или /api/orders/

def post(self, request):
    serializer = self.serializer_class(data=request.data)
        if serializer.is_valid():
             order_id = serializer.validated_data.get('order_id')
             order = Order.objects.get(pk=order_id)
             if order.user.company != request.user.company:
                 raise Http404
              .... 

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Как правило, мы можем использовать ListCreateAPIView класс DRF для List [GET] всех объектов и Create [POST] новый экземпляр объекта в некоторой конечной точке, такой как api/v1/orders/.

И для извлечения / обновления / удаления [GET / PATCH / DELETE] любого отдельного экземпляра, который мы можем использовать RetrieveUpdateDestroyAPIView класс DRF, подключенный в некоторых конечных точках формы api/v1/orders/<pk>/

Вообще говоря, конечные точки, такие как api/v1/orders/, должны list все доступные / применимые объекты и добавление <pk> к нему должно возвращать details объекта, связанного с этим ПК, в противном случае обрабатывается должным образом с помощью 404 или некоторого другого соответствующий код статуса.

Мой менеджер всегда говорил мне об этом, поэтому я хотел бы передать то же самое; Сделать заказ https://developer.github.com/v3/

Ссылка:

https://www.django -rest-framework.org / апите-гид / родовые-просмотры / # listcreateapiview https://www.django -rest-framework.org / апите-гид / родовые-просмотры / # retrieveupdatedestroyapiview

0 голосов
/ 07 января 2019

Это зависит от того, чего вы пытаетесь достичь.

Если вы пытаетесь получить результаты (например, HTTP GET), вы можете использовать «/ api / orders» для получения всех заказов и «/ api / orders / {id}» для получения конкретного заказа.

С другой стороны, если вы пытаетесь создать новый заказ (т. Е. HTTP POST), то «/ api / orders /» можно использовать для создания нового заказа, а после успешного создания тело ответа будет вернуть объект заказа (включая уникальный идентификатор).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...