560 字
1 分钟
FastAPIfastapi
FastAPI 输入基础:路径参数与查询参数
把 URL 上最常见的两类输入拆开:路径参数负责定位资源,查询参数负责表达筛选和附加条件。
官方把路径参数和查询参数拆成了两个章节,这样查资料很舒服;连续学习时,把它们放在一起会更顺,因为它们本质上都在回答同一个问题:请求里的输入,先从 URL 的哪一层进来。
1. 路径参数:资源定位的一部分
Python3
点击展开代码
展开代码
这里的 item_id 不只是一个字符串变量,而是 URL 路径的一部分。
FastAPI 会根据类型注解自动解析:
- 写成
str,/items/foo和/items/4都行 - 写成
int,传foo会自动报校验错误
所以它不是"先拿到字符串,再自己转",而是直接把 Python 类型系统接到了请求解析层。
2. 路径匹配的顺序很重要
Python3
点击展开代码
展开代码
/users/me 必须写在 /users/{user_id} 前面,否则 me 会被当成普通的 user_id。
这里很容易以为 FastAPI 会自动优先匹配更具体的路径,但实际还是要考虑声明顺序。
3. 枚举路径参数
当路径参数只能从一组有限值里选时,可以直接用 Enum:
Python3
点击展开代码
展开代码
这样文档里会直接展示可选值,而不是一个自由输入框。
4. 路径转换器
有时候变量本身还想继续吃掉路径,可以用 Starlette 的路径转换器:
Python3
点击展开代码
展开代码
这里的 :path 让 file_path 可以包含 /。
5. 查询参数:? 后面的附加条件
Python3
点击展开代码
展开代码
对应请求可以写成:
/items/?skip=0&limit=10只要参数不是路径参数,FastAPI 默认就会把它解释成查询参数。
6. 路径参数和查询参数可以同时存在
Python3
点击展开代码
展开代码
这里:
item_id是路径参数p、q、short是查询参数
布尔查询参数也会自动做转换。像 1、true、on 都会被识别成 True。
7. 一开始最值得建立的区分
这一阶段最重要的不是背更多 API,而是先把 URL 上的输入层分开:
- 路径参数:属于资源标识的一部分
- 查询参数:属于对本次请求的额外说明
后面无论进入请求体、表单还是依赖注入,只要这个区分先站稳,阅读体验会顺很多。
专题阅读
FastAPI
这篇文章属于同一条阅读链。你可以直接在这里切换,不用再回到列表页重新找。
当前进度3 / 11
01
FastAPI 学习路线图:把教程式切分重新排成一条主线
更新于 2026-04-03
02FastAPI 起步:应用入口、fastapi dev、entrypoint 与 uvicorn
更新于 2026-04-02
03FastAPI 输入基础:路径参数与查询参数
更新于 2026-04-01
当前
04FastAPI 请求体:Pydantic 模型、多参数与嵌套结构
更新于 2026-03-31
05FastAPI 参数校验:Query、Path、Body、Cookie、Header
更新于 2026-03-30
06FastAPI 输出层:响应模型、状态码与数据更新
更新于 2026-03-29
07FastAPI 请求编码切换:表单、文件上传与 UploadFile
更新于 2026-03-28
08FastAPI 组织逻辑:Depends、yield、错误处理与安全起步
更新于 2026-03-27
09FastAPI Bigger Applications:APIRouter、多文件应用与生命周期
更新于 2026-03-26
10FastAPI 扩展层:中间件、CORS 与后台任务
更新于 2026-03-25
11FastAPI 验证与运行:Testing、CLI、Uvicorn 与 Workers
更新于 2026-03-24
部分信息可能已经过时
留言区
留言
欢迎纠错、补充、交流。昵称和评论内容必填;如果你愿意,也可以留下联系方式,仅站主可见。