0

我有一个项目,Django 2.x.我想使用drf-spectacular添加自动文档。我drf-spectacular=0.15.1目前正在使用。

我在 Docker 中运行我的项目,我的 api 容器的构建上下文设置为 api 项目的根文件夹。

当我运行命令生成模式时./manage.py spectacular --file schema.yml,脚本会schema.yml在我的 api 项目的根目录中创建一个文件,但我的 Djangosettings.py位于下一层,位于名为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'
    },
}

一旦我尝试访问项目中的 swagger-ui url 以检查架构是否已加载到那里,我会收到错误消息:**Fetch error** Not Found schema.yml. 我尝试以各种方式传递架构 url,例如通过相对 url ../schema.yml,但这也不起作用。也许有人可以让我知道我做错了什么。

谢谢!

4

1 回答 1

1

swagger-configuration 文档

url: 指向 API 定义的 URL(通常是swagger.jsonswagger.yaml

因此,该url值必须是“相对 URL”或“绝对 URL”。

例如

SPECTACULAR_SETTINGS = {
    'SWAGGER_UI_SETTINGS': {
        'url': 'https://example.com/path/to/schema/',  # absolute path
        'url': '/path/to/schema/',  # relative path
    },
}
于 2021-05-08T17:35:49.223 回答