如何为我的 FastAPI
项目的所有页面设置网站图标(favicon)?
只需在 GET 请求到达 /favicon.ico
时返回一个 FileResponse
。
文件结构:
root
|-main.py
|-favicon.ico
主程序.py
from fastapi import FastAPI
from fastapi.responses import FileResponse
app = FastAPI()
favicon_path = 'favicon.ico'
@app.get('/favicon.ico', include_in_schema=False)
async def favicon():
return FileResponse(favicon_path)
修饰器中包含的关键字include_in_schema=False
将路径操作从用于自动生成API文档的架构中隐藏。
include_in_schema=False
,以隐藏该路由在模式中的显示。 - Tom Pohlfrom fastapi.responses import FileResponse
- Joe Jacobs我曾经遇到过同样的问题,试了很多方法都没有解决,直到我为静态文件挂载了文件夹后才开始正常工作。
在main.py中
from fastapi.staticfiles import StaticFiles
app = FastAPI()
app.mount("/static", StaticFiles(directory="static"), name="static")
<link id="favicon" rel="icon" type="image/x-icon" href="static/images/favicon.ico">
我怀疑这与文件夹权限相关。
/favicon.ico
。如果您正在寻找的是这个文件,那么您需要在该路径下提供一个文件(这将假定您的端点返回请求的实际答案)。您可以添加一个@router.get('/favicon.ico')
并在该视图中返回一个FileResponse:https://fastapi.tiangolo.com/advanced/custom-response/#fileresponse - MatsLindh