Параметры запроса в запросе на Django 3.0.3 - PullRequest
0 голосов
/ 05 августа 2020

Я собираю API, и мне нужно добавить параметры запроса в URI, например https://www.example.com/api/endpoint?search=term&limit=10.

  1. Мой первый вопрос: в Django 3.0 я бы нужно использовать re-path для выполнения sh анализа различных параметров, правильно?

  2. Во-вторых, вопрос в соглашении. Похоже, что два из трех API, с которыми я много работал в последнее время, используют соглашение вроде:

    /api/endpoint?paramater1=abc&parameter2=xyz
    

    Другой использует что-то вроде:

    /api/endpoint?$parameter1=abc&parameter2=abc
    

    Глядя на какое-то прошлое Django вопрос, связанный с этим топом c, я вижу такие вещи, как:

    /api/endpoint/?parameter1=abc&parameter2=xyz
    

    В другом сообщении, которое я прочитал, предлагалось разделить параметры с помощью ;.

    Думаю, я Мне просто любопытно, каким должно быть «правильное» соглашение с точки зрения Django или общего согласия.

  3. Наконец, мне кажется, что я пытаюсь достичь sh должен быть запрос GET. Внешний интерфейс отправляет определенные пользователем параметры (section и startingPage) на сервер, где создается PDF-файл, соответствующий этим параметрам. Когда он сгенерирован, он отправляет его обратно в FE. PDF-файлы слишком велики для создания на стороне клиента. GET будет правильным методом в этом случае, верно?

1 Ответ

0 голосов
/ 17 августа 2020

Ну, я выбрал go с первым соглашением:

/api/endpoint?paramater1=abc&parameter2=xyz

Просто потому, что большинство API, с которыми я работаю, используют это соглашение.

Для моих файлов:

# urls.py

from django.urls import path

from .views import GeneratePDFView

app_name = 'Results'

urlpatterns = [
    path('/endpoint',
         GeneratePDFView.as_view(), name='generate_pdf')
]

# view.py

from django.conf import settings

from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from rest_framework.status import HTTP_200_OK, HTTP_400_BAD_REQUEST
from rest_framework.views import APIView

class GeneratePDFView(APIView):
    permission_classes = [IsAuthenticated]

    def get(self, request, *args, **kwargs):
        if len(request.query_params) == 2:
            data['id'] = {'id': request.user.id}
            data['starting_page'] = request.query_params.get('parameter1')
            data['data_view'] = request.query_params.get('parameter2')
            serializer = GeneratePDFSerializer(data=data)
        ...

...