Как добавить параметр заголовка ко всем путям url в drf_spectacular?
Я использую drf_spectacular, чтобы иметь возможность использовать swagger, и он работает нормально. Я определяю необходимые параметры для моих представлений API (в пути или в заголовке) следующим образом:
@extend_schema(
OpenApiParameter(
name='accept-language',
type=str,
location=OpenApiParameter.HEADER,
description="fa or en. The default value is en"
),
)
но я не хочу добавлять эти строки кода во все мои представления API. Есть ли простой способ сделать это? (Что-то вроде определения этих строк кода в SPECTACULAR_SETTINGS)
Я уже нашел опцию APPEND_COMPONENTS в документации drf_spectacular, но я с ней не знаком.
Вы можете создать пользовательский класс схемы из drf_spectacular.openapi
и переопределить метод get_override_parameters(...)
как
from drf_spectacular.openapi import AutoSchema
from drf_spectacular.utils import OpenApiParameter
class CustomAutoSchema(AutoSchema):
global_params = [
OpenApiParameter(
name="accept-language",
type=str,
location=OpenApiParameter.HEADER,
description="`fa` or `en`. The default value is en",
)
]
def get_override_parameters(self):
params = super().get_override_parameters()
return params + self.global_params
и затем присоедините этот CustomAutoSchema
класс в вашей DEFAULT_SCHEMA_CLASS
настройке
REST_FRAMEWORK = {
# YOUR SETTINGS
"DEFAULT_SCHEMA_CLASS": "path.to.your.custom.class.CustomAutoSchema",
}