FastAPI挂载/api子应用后访问/api路径出现404错误求助
解决FastAPI访问/api返回404的问题
问题原因
你挂载的子应用api_app的根路由@api_app.get("/")对应主应用的/api/路径(带结尾斜杠),但访问/api(不带结尾斜杠)时,子应用中没有匹配该路径的路由,因此返回404。
解决方法
方法一:让子应用同时处理带/不带斜杠的请求
修改api_app的路由定义,给read_root函数添加额外的路径装饰器,同时匹配/(对应主应用的/api/)和空路径(对应主应用的/api):
@api_app.get("/") @api_app.get("") def read_root(): return {"Hello": "World"}
这样无论是访问/api还是/api/,都会触发该接口返回正常响应。
方法二:在主应用中添加重定向路由
在主app中新增一个路由,将/api的请求重定向到/api/:
from fastapi.responses import RedirectResponse @app.get("/api") def redirect_api(): return RedirectResponse(url="/api/")
访问/api时会自动跳转到/api/,从而命中已有的read_root接口。
内容的提问来源于stack exchange,提问作者coder




