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

Вернуться на верх