本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/19503695
在 Web 开发中,需要请求很多静态资源文件(不是由服务器生成的文件),如 css/js 和图片文件等。
示例
import uvicorn
from fastapi import FastAPI
from fastapi.staticfiles import StaticFilesapp = FastAPI()
app.mount("/get_static_file", StaticFiles(directory="static"), name="static")if __name__ == '__main__':uvicorn.run("static_file:app", port=8001, reload=True)
代码解析
app.mount() 这行代码用于将静态文件目录挂载到 FastAPI 应用中,提供静态文件服务功能。
参数详解
- 路径映射:"get_static_file" - 静态文件访问的 URL 路径前缀
- 静态文件配置:StaticFiles(directory="static") - 创建静态文件处理器,指向项目根目录下的 static 文件夹
- 命名标识:name="static" - 为该静态文件路由分配别名,便于后续引用
工作机制
- 目录映射:将服务器上 static 目录映射到 /get_static_file URL 路径
- 文件服务:允许通过 HTTP 请求访问 static 目录中的文件资源
- 访问方式:用户可通过 /get_static_file/filename 访问具体静态文件
使用示例
- 假设 static 目录下有 index.html 文件:
- 实际存储:./static/index.html
- 访问路径:http://host:port/get_static_file/index.html
http://127.0.0.1:8001/get_static_file/test.png


http://127.0.0.1:8001/get_static_file/imgs/test.png

补充:name的应用
import uvicorn
from fastapi import FastAPI
from fastapi.staticfiles import StaticFilesapp = FastAPI()
app.mount("/get_static_file", StaticFiles(directory="static"), name="static")# 使用 name 生成静态文件路径
@app.get("/image")
async def get_image():# 通过 name 访问静态文件return {"url": app.url_path_for("static", path="imgs/test.png")}if __name__ == '__main__':uvicorn.run("static_file:app", port=8002, reload=True)
结果
