如何在 FastAPI 中提供静态文件

新手上路,请多包涵

我正在尝试提供 package_docs 目录中的静态文件。当我在浏览器中打开时:

http://127.0.0.1:8001/packages/docs/index.html ,页面正在运行。

但是我想打开页面:http: //127.0.0.1 :8001/packages/docs/

没有源文件。输出是 404 Not Found

 app.mount("/packages/docs",
    StaticFiles(directory=pkg_resources.resource_filename(__name__, 'package_docs')
    ),
    name="package_docs")

@app.get("/packages/docs/.*", include_in_schema=False)
def root():
    return HTMLResponse(pkg_resources.resource_string(__name__, "package_docs/index.html"))

app.include_router(static.router)
app.include_router(jamcam.router, prefix="/api/v1/cams", tags=["jamcam"])

如何更改我的代码?任何建议都会有所帮助。先感谢您。

原文由 Christy Nakou 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 859
1 个回答

Starlette 中有一个 html 选项,可以在 FastAPI 中使用。 明星文档

这会让你有这样的东西:

 app.mount("/site", StaticFiles(directory="site", html = True), name="site")

这会将 /site 解析为 /site/index.html,将 /site/foo/ 解析为 /site/foo/index.html 等。

如果您想以不使用“directory = /foo”处理的方式更改文件夹名称,其他答案可以帮助您重定向,但如果您只想加载关联的 .html 文件,这是最简单的选择。

原文由 Justin Malloy 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进