请求解析、输入校验与上传
Flask Web 开发#Python全栈#第十阶段#Flask Web 开发#请求解析、输入校验与上传约 720 字 · 2 分钟阅读
追问显示点击任意追问卡片可收起 / 展开
request 对象可以读取哪些请求信息?
追问 路径、方法、请求头、查询、表单、文件与 JSON 应分别从哪里取得?
request.args 与 request.form 有什么区别?
追问 直接下标访问与
get 对缺失字段如何处理?重复同名字段为何需要考虑 getlist?分页参数应该如何转换和校验?
追问 缺失、非法字符串、负数和超大页大小分别如何处理?不能只依赖类型转换默认值的原因是什么?
如何通过 request.get_json() 解析 JSON?
追问 在 Flask 3.1 基线下,媒体类型不符合与消息体 JSON 格式错误通常分别怎样报告?为什么不宜随意使用 force 绕过输入约定?
get_json(silent=True) 有什么取舍?
追问 返回 None 时怎样区分无数据、解析失败与合法 JSON null?何时应明确拒绝输入而不是静默使用默认值?
解析得到 JSON 后,为什么仍要校验结构和业务字段?
追问 列表、数字、对象都可能是合法 JSON;必填字段、类型、长度和允许值怎样形成明确错误反馈?
请求头与请求 Cookie 怎样读取,哪些内容不应直接信任?
追问 客户端提供的用户 ID、角色和来源头能否直接作为授权依据?代理转发信息需要什么信任条件?
读取原始请求体与解析表单或 JSON 时,需要注意什么?
追问 数据流读取顺序、缓存选项和请求大小怎样影响后续解析?为什么不宜同时无约束地按多种格式尝试?
文件上传如何从请求中取得并保存?
追问 文件名处理、空文件、允许类型、大小限制、存储路径和重名怎样校验?仅检查扩展名为什么不足以确认文件可信?
怎样避免上传或下载路径被客户端输入控制?
追问 安全文件名是否保证不会重名?如何采用服务端生成的标识、受控目录和资源归属校验处理文件访问?