参考官方文档地址:https://fastapi.tiangolo.com/zh/how-to/custom-docs-ui-assets/#self-hosting-javascript-and-css-for-docs
在使用fastapi的时候,按照官网的教程,访问localhost:8000/docs的时候,基本上是空白一片,在这个背景下,我们需要寻求帮助,以下内容就是我按照官网的文档进行整理的解决方案
版本介绍
python==3.9
fastapi==0.104.1
原项目目录:
.
├── app
│ ├── __init__.py
│ ├── main.py
改变后的项目目录
.
├── app
│ ├── __init__.py
│ ├── main.py
└── static
├── redoc.standalone.js
├── swagger-ui-bundle.js
└── swagger-ui.css
三个文件的下载地址分别为:
- https://cdn.jsdelivr.net/npm/swagger-ui-dist@5.9.0/swagger-ui-bundle.js
- https://cdn.jsdelivr.net/npm/swagger-ui-dist@5.9.0/swagger-ui.css
- https://cdn.jsdelivr.net/npm/redoc@next/bundles/redoc.standalone.js
如无法下载,可参考项目https://github.com/silk-java/fastapi-tutorial
在项目的启动文件中,添加如下代码
# ========设置docs文档为本地文件=========
from fastapi.staticfiles import StaticFiles
from fastapi.openapi.docs import (
get_redoc_html,
get_swagger_ui_html,
get_swagger_ui_oauth2_redirect_html,
)
app.mount("/static", StaticFiles(directory="static"), name="static")
@app.get("/docs", include_in_schema=False)
async def custom_swagger_ui_html():
return get_swagger_ui_html(
openapi_url=app.openapi_url,
title=app.title + " - Swagger UI",
oauth2_redirect_url=app.swagger_ui_oauth2_redirect_url,
swagger_js_url="/static/swagger-ui-bundle.js",
swagger_css_url="/static/swagger-ui.css",
)
@app.get(app.swagger_ui_oauth2_redirect_url, include_in_schema=False)
async def swagger_ui_redirect():
return get_swagger_ui_oauth2_redirect_html()
@app.get("/redoc", include_in_schema=False)
async def redoc_html():
return get_redoc_html(
openapi_url=app.openapi_url,
title=app.title + " - ReDoc",
redoc_js_url="/static/redoc.standalone.js",
)
# ========设置docs文档为本地文件=========