Как добавить параметры ссылки в декораторе extend_schema в drf-spectacular

Я использую drf-spectacular для генерации документации swagger/redoc API.

Я столкнулся с проблемой настройки генерируемых схем. Я пытаюсь сгенерировать ссылочный параметр, используя декораторы @extend_schema в drf_spectacular, но не получил ожидаемой схемы.

extend_schema -

`
 from drf_spectacular.utils import extend_schema
 @extend_schema(
    parameters=headerParam,
    responses = {200:Response1,400:errorresponse},
    tags = ['User'],
)`

headerParam -

`headerParam = [
    OpenApiParameter(
        name='Accept-Language', 
        location=OpenApiParameter.HEADER,
        type=OpenApiTypes.STR,
        description='ISO 2 Letter Language Code',
        required=True,
        enum=['en', 'ar'],
        # default='en',
    ),
    OpenApiParameter(
        name='Accept', 
        location=OpenApiParameter.HEADER,
        type=OpenApiTypes.STR,
        description='Type of response you are expecting from API. i.e. (application/json)',
        required=True,
        default='application/json',
    ),
]`

Проблема в том, что схема в drf_spectacular генерируется следующим образом -

`"parameters": [
      {
            "in": "header",
            "name": "Accept",
            "schema": {
            "type": "string",
            "default": "application/json"
            },
            "description": "Type of response you are expecting from API. i.e (application/json)",
            "required": true
       },
       {
            "in": "header",
            "name": "Accept-Language",
            "schema": {
            "type": "string",
            "enum": [
               "ar",
               "en"
             ]
            },
            "description": "ISO 2 Letter Language Code",
            "required": true
       }
 ],`

Я хочу генерировать следующим образом -

 "parameters": [
     {
         "$ref": "#/components/parameters/Accept"
     },
     {
         "$ref": "#/components/parameters/Accept-Language"
     }
  ],`

Заранее благодарю и признателен за помощь :)

Я сделал R&D, но не нашел ничего связанного с этим.

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