You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

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

火山引擎 最新活动