Я новичок в Django REST Framework ... но выясняю это с помощью учебных пособий, быстрого старта, интернета и трюков.Однако я не нашел четкого решения следующей проблемы.
Предположим, что кто-то хочет написать API, для которого требуется целое число.
Используя Django path
в шаблонах URL, можно попробовать:
urlpatterns = [
...
path('my_api/<int:integer_argument>', views.my_api, name='my_api'),
...
]
и, по их мнению,
@api_view(['GET'])
def my_api(request, integer_argument):
# do stuff
return JsonResponse({'int': integer_argument})
Примечание: здесь я использую JsonResponse только для того, чтобы сохранитьэтот простой, но наиболее вероятный, что / те аргументы (ы) входят в класс / модель и в сериализатор, который будет возвращен Response(serializer.data)
.
Так что теперь, если они должны были протестировать приложение, которое вызывает этот API (в режиме разработки) http://localhost:8000/my_api/1
они должны получить {'int':1}
.
Однако, если бы они вызвали http://localhost:8000/my_api/e
, они получают либо страницу отладки, либо Bad Request (400)
как html .
Предположим, что у человека, создавшего API, была правильная обработка ошибок для проверки аргументов (в этом случае integer_argument
является целым числом).
Теперь path
мешает, тогда как для сайта django это может быть желаемым результатом.
Что такое среда RESTful и django REST для разрешения этой ситуации?
Преобразование path
(например, <int:arg_name>
) делает URL-адрес читаемым и, таким образом, является хорошей функцией дляиметь.
Должен ли я просто перемещать типы для ввода аннотаций в представлении на основе функций?и использовать общие слагы?
Примечание: в этом случае я хочу, чтобы каждый запрос к my_api/<something>
возвращал единый ответ (ошибка или нет).