安裝 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 不同