在 drf-spectacular 设置中通过 Swagger-UI url
Pass Swagger-UI url in drf-spectacular settings
我有一个用 Django 2.x.
编写的项目,我想使用 drf-spectacular 添加自动文档。我现在正在使用 drf-spectacular=0.15.1
。
我 运行 在 Docker 中设置我的项目,我的 api 容器的 build 上下文设置为 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
但这也不起作用。也许有人可以告诉我我做错了什么。
谢谢!
url
: The URL pointing to API definition (normally swagger.json
or 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
},
}
我有一个用 Django 2.x.
编写的项目,我想使用 drf-spectacular 添加自动文档。我现在正在使用 drf-spectacular=0.15.1
。
我 运行 在 Docker 中设置我的项目,我的 api 容器的 build 上下文设置为 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
但这也不起作用。也许有人可以告诉我我做错了什么。
谢谢!
url
: The URL pointing to API definition (normallyswagger.json
orswagger.yaml
)
因此,url
值必须是“相对 URL”或“绝对 URL”。
例如
SPECTACULAR_SETTINGS = {
'SWAGGER_UI_SETTINGS': {
'url': 'https://example.com/path/to/schema/', # absolute path
'url': '/path/to/schema/', # relative path
},
}