路径参数和查询参数
FastAPI 会根据函数参数的位置和名字,自动判断参数来自哪里。
一、路径参数
路径参数写在 URL 路径里,用 {} 包起来。
访问:
返回:
这里的 user_id: int 会让 FastAPI 自动做类型转换。
如果访问:
FastAPI 会返回 422 Unprocessable Entity,因为 "abc" 不能转成整数。
二、路径顺序很重要
如果同时有固定路径和动态路径,固定路径要写在前面。
这样访问 /users/me 才会进入 get_current_user()。
如果把 /users/{user_id} 写在前面,me 会被当成 user_id 解析,然后因为不能转成 int 报错。
三、查询参数
查询参数写在 URL 的问号后面:
在 FastAPI 里,只要函数参数没有出现在路径中,它默认就是查询参数。
访问:
返回:
默认值的含义:
四、可选查询参数
含义:
str | None:这个值可以是字符串,也可以是None= None:不传时默认值是None
Pydantic v2 里,
str | None不等于可选参数。只有写了默认值,例如str | None = None,才表示可以不传。
五、布尔查询参数
这些值通常都会被解析成 True:
这些值通常会被解析成 False:
六、使用 Query 添加校验
FastAPI 当前推荐配合 Annotated 写参数元数据。
常用校验参数:
七、路径参数也能校验
路径参数用 Path:
访问 /users/0 会返回 422,因为 user_id 不满足 ge=1。
八、路径参数和查询参数一起用
访问:
参数来源:

