Передайте 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
},
}