安装 aiofiles
pip install aiofiles
个人感想
现在都是前后端分离,感觉在 FastAPI 应用程序中直接使用静态资源的可能性不大,只做了解(也不难
使用 StaticFiles 访问静态资源
from fastapi import FastAPI from fastapi.staticfiles import StaticFiles from fastapi.responses import HTMLResponse app = FastAPI() # 挂载 app.mount("/static", StaticFiles(directory="static"), name="static") @app.get("/") def get_login(): # 返回一段 HTML 代码,导入 js 文件的路径以 /static 为根路径 html = """ <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="/static/jquery.min.js"></script> </head> <body> 12345 </body> </html> """ return HTMLResponse(html)
什么是 mount
- “挂载”意味着在特定路径中添加一个完整的“独立”应用程序,然后负责处理所有子路径
- 这与使用 APIRouter 不同,因为挂载的应用程序是完全独立的
- 主应用程序中的 OpenAPI 和文档不会包含来自挂载的应用程序的任何内容
解析上面的代码
- 第一个 /static 指的是这个“子应用程序”将被“安装”到的子路径,因此,任何以 /static 开头的路径都将由它处理
- directory="static" 是指包含静态文件的目录的名称,本地目录
- name="static" 赋予它一个可以被 FastAPI 内部使用的名称,这里暂时没用到
- 所有这些参数都可以与 static 不同