在 FastAPI 中,您可以使用 StaticFiles 中间件提供静态文件,包括 HTML。但是,使用 StaticFiles 作为根路径 (/) 可能会导致意外行为,因为它会自动为根目录提供 index.html。
根据 [Starlette 文档](https://www.starlette.io/static-files/),StaticFiles 有一个 html 选项,当设置为 True 时,会自动加载目录的 index.html,如果这样的文件存在。
要在根路径上正确渲染自定义 HTML 文件,请将 StaticFiles 挂载到不同的路径,例如 /static:
from fastapi import FastAPI from fastapi.staticfiles import StaticFiles app = FastAPI() app.mount("/static", StaticFiles(directory="static"), name="static")
安装 StaticFiles 和定义端点的顺序是 至关重要的。如果您在定义根端点后挂载 StaticFiles,则根端点将优先,并将提供自定义 HTML 文件。
如果您想提供不同的 HTML 文件动态并具有额外的端点,建议从 StaticFiles 中删除 html=True 选项并使用 FastAPI [模板](https://fastapi.tiangolo.com/templates/)。
通过解决 StaticFiles 的排序和配置问题,您可以提供自定义 HTML 文件,而不是根路径上的index.html,同时还启用其他API端点。根据您的具体用例仔细考虑 html=True 选项。
以上是如何在 FastAPI 的根路径中提供自定义 HTML 文件而不是 index.html?的详细内容。更多信息请关注PHP中文网其他相关文章!