(三)路径、查询串、表单与 JSON 的取值
1. 沿输入位置选择接口
Flask 的路径写作 /books/<int:book_id>,转换器把匹配到的数字交给参数。请求 /books/no 没有匹配整数转换器,直接得到 404;这与前一章把不合格编号识别为参数错误的过程不同。
| 输入 | 读取方式 | 需要继续处理的内容 |
|---|---|---|
/books/3 |
函数参数 book_id |
按编号查记录和归属 |
/?q=Python |
request.args.get("q", "") |
文本长度、筛选含义 |
| HTML 表单 | request.form.get(...) |
勾选状态、重复项、字段规则 |
| JSON 请求体 | request.get_json() |
解析后的结构和字段校验 |
| 请求方法与头 | request.method、request.headers |
按动作和协议继续判断 |
request 指向正在处理的那次请求,下一节会展开它依赖的上下文。request.args 与 request.form 是可以保存同名多项的 MultiDict;.get 读第一项,.getlist 读全部项。提交两个 title 时,单独使用 .get 会漏看重复项,后面的表单校验会明确检查。
2. 解析成功之后仍要校验
短例的 request.get_json() 先检查媒体类型,再解析 JSON。表单文本发送到 /inspect,得到 415;声明 JSON 却发送破损语法,得到 400。拿到字典之后,书名是否为空、标签是否合格仍需要模型或校验函数处理。
Flask 不会因为参数写了 data: BookDraft,就自动读取并创建这个对象。这里从 request.form 显式读取字段,再构造数据类;也可以在项目中主动调用上一章的 Pydantic 模型。框架帮忙解析的部分和业务需要检查的部分,应沿实际调用分清。