FastAPI路径参数默认值如何生效?解决无参数路径返回404问题
FastAPI路径参数默认值生效的解决方案
你遇到的核心问题是:路径参数是URL路径的固定组成部分,/users/{code}这个路由规则要求URL必须包含code部分,所以访问/users/时找不到匹配的路由,返回404。这和查询参数逻辑不同——查询参数是可选的,所以默认值能直接生效。
要让路径参数的默认值生效,你需要把路径参数设置为可选,FastAPI支持通过在路径参数名后加?来实现。修改后的代码如下:
from fastapi import FastAPI, Path app = FastAPI() @app.get("/users/{code?}") async def get_user(code: str = Path("hellomotto", regex=r'hello.*')): return {"code": code}
这样修改后:
- 访问
localhost:666/users/helloworld时,正常返回{"code": "helloworld"} - 访问
localhost:666/users/时,会自动使用默认值hellomotto,返回{"code": "hellomotto"}
需要注意:
- 路径参数设为可选后,FastAPI会同时匹配
/users/和/users/{code}两种URL格式 - 这种方式无需新增单独的
/users/端点,就能满足你想要的默认值逻辑
另外你之前尝试的default="hellomotto"本身没问题,但原路由规则不允许code缺失,导致默认值根本没机会被触发——问题出在路由定义,而非参数默认值的设置。
内容的提问来源于stack exchange,提问作者avnav99
相关产品推荐
相关产品推荐

