DRF - уникальный идентификатор запроса
Есть ли в объекте uuid
какой-либо уникальный идентификатор типа request
?
from rest_framework.decorators import api_view
from rest_framework.responses import Response
@api_view(['GET'])
def index_view(request):
return Response()
Мне нужен уникальный идентификатор для каждого запроса, чтобы использовать его в дальнейшем.
Если нет, то куда его добавить? В request.META
?
По умолчанию это не задано, но вы всегда можете создать промежуточное ПО для добавления uuid в каждый запрос. request.META
- хорошее место для добавления, так как это обычное место для добавления свойства, связанного с запросом.
Вот пример кода.
# ~/apps/core/middleware.py
# Place this file wherever you feel most suitable for your project.
import uuid
class SimpleMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
request.META["uuid"] = uuid.uuid4()
return self.get_response(request)
Затем, в настройках, вы можете добавить промежуточное ПО.
MIDDLEWARE = [
...
"apps.core.middleware.SimpleMiddleware"
]
Вы можете проверить, используя ваш код выше.
from rest_framework.decorators import api_view
from rest_framework.responses import Response
@api_view(['GET'])
def index_view(request):
print(request.META.get('uuid')) # try to print here to check
return Response()
Ссылка: https://docs.djangoproject.com/en/4.1/topics/http/middleware/
Каждый запрос уникален,
даже если index_view
вызывается из одного и того же браузера несколько раз,
каждый запрос будет отличаться.
Но вот некоторые подходы, которые могут вам помочь.
Один из способов - использовать метку времени, когда запрос был получен
Другим вариантом может быть использование query_param и добавление уникального значения при вызове запроса для уникальной идентификации в index_view