Передайте URL-адрес Swagger-UI в настройках drf-впечатляющих

У меня есть проект, написанный на Django 2.x.Я хочу добавить к нему автоматическую документацию с помощью drf-spectular . я использую drf-spectacular=0.15.1 в данный момент.

Я запускаю свой проект в Docker, и контекст сборки для моего контейнера api установлен как корневая папка проекта api.

Когда я запускаю команду для создания схемы, ./manage.py spectacular --file schema.yml, сценарий создает schema.yml файл в корне моего проекта api, но мой Django находится на один уровень ниже, в папке с именем my_website. Структура проекта такая:

      main-project
\api
 \_my_website
  __init__.py
  apps.py
  settings.py
  urls.py

 schema.yml

\client
docker-compose.yml

Так что в settings.py Я добавил определенные настройки, чтобы указать Swagger-UI, откуда брать схему, как указано в drf-spectacular документация:

      SPECTACULAR_SETTINGS = {
    'SWAGGER_UI_SETTINGS': {
        'url': 'schema.yml'
    },
}

Как только я пытаюсь получить доступ к URL-адресу swagger-ui в моем проекте, чтобы проверить, что схема загружена туда, я получаю сообщение об ошибке: **Fetch error** Not Found schema.yml. Я пробовал передавать URL-адрес схемы разными способами, например, через относительный URL-адрес ../schema.ymlно это тоже не сработало. Может, кто-нибудь подскажет, что я делаю не так.

Спасибо!

1 ответ

Решение

Из документа конфигурации swagger ,

: URL-адрес, указывающий на определение API (обычно swagger.json или же swagger.yaml)

Таким образом url значение должно быть либо "относительным URL", либо "абсолютным URL".

Например

      SPECTACULAR_SETTINGS = {
    'SWAGGER_UI_SETTINGS': {
        'url': 'https://example.com/path/to/schema/',  # absolute path
        'url': '/path/to/schema/',  # relative path
    },
}
Другие вопросы по тегам