在FastAPI中从根目录提供静态文件 [英] Serve static files from root in FastAPI

查看:10
本文介绍了在FastAPI中从根目录提供静态文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试让FastAPI与Svelte一起工作。我已经用Svelte构建了静态文件,现在我正尝试从FastAPI提供它们。问题是,构建的Svelte文件引用了例如来自根目录的global.css,这意味着我不能将它们挂载在子文件夹上。

相反,我必须将它们挂载到根目录:

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

但是,这会使在路由(函数修饰符)中定义的任何内容都无法访问。

是否可以同时定义静态文件函数?两者都不是

a)路由优先,如果没有路由,它会尝试从静态目录读取

b)静态目录优先,我指定了一个排除路径,该路径将转到路由

推荐答案

创建外部(根)FastAPI应用程序,并在其中装载StaticFiles应用程序和现有的FastAPI应用程序。

api_app = FastAPI(title="my existing api")
api_app.include_router(my_existing_router)

app = FastAPI(title="my app root")
app.mount('/api', api_app)
app.mount('/', StaticFiles(directory="static", html=True), name="static")

应用程序对象的挂载顺序似乎很重要。对于OpenAPI文档,根应用程序的/docs和API应用程序的/api/docs

这篇关于在FastAPI中从根目录提供静态文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆