微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 drf-spectacular 设置中传递 Swagger-UI url

如何解决在 drf-spectacular 设置中传递 Swagger-UI url

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

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

当我运行命令来生成架构 ./manage.py spectacular --file schema.yml 时,脚本会在我的 api 项目的根目录中创建一个 schema.yml 文件,但我的 Django settings.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 但这也不起作用。也许有人可以让我知道我做错了什么。

谢谢!

解决方法

来自swagger-configuration doc

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

因此,url 值必须是“相对网址”或“绝对网址”。

例如

SPECTACULAR_SETTINGS = {
    'SWAGGER_UI_SETTINGS': {
        'url': 'https://example.com/path/to/schema/',# absolute path
        'url': '/path/to/schema/',# relative path
    },}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。