查询、分页、过滤与排序
RESTful API、JWT 与权限认证#Python全栈#第十三阶段#RESTful API、JWT 与权限认证#查询、分页、过滤与排序约 665 字 · 2 分钟阅读
追问显示点击任意追问卡片可收起 / 展开
列表接口的分页参数如何设计和校验?
追问 页码分页与 limit/offset 分页各有什么边界?怎样限制最大页大小,避免一次请求拖垮数据库和响应?
游标分页与页码分页适合哪些数据变化场景?
追问 新增和删除频繁时,offset 可能出现什么重复或跳过?游标字段需要稳定、可比较且有索引意味着什么?
筛选条件如何避免把数据库查询拼接成不安全字符串?
追问 字段白名单、运算符映射和参数绑定分别解决什么问题?用户可排序字段为何也需要白名单?
排序参数怎样设计才能保持稳定结果?
追问 按更新时间排序时如何用唯一键作为次级排序?升降序、非法字段和空值位置怎样约定?
日期、状态和多值筛选参数应如何表达?
追问 时区、闭区间/半开区间、重复参数与逗号分隔怎样选择?接口文档如何给出不歧义的样例?
列表接口返回空结果应使用什么状态和结构?
追问 空集合、资源不存在和筛选无匹配有什么区别?为什么通常不应把空列表返回成 404?
详情接口访问不存在资源时如何反馈?
追问 路径参数格式错误、资源不存在和用户无权看到分别如何区分?在防止资源枚举时是否需要统一部分响应?
批量查询与批量修改应如何设计输入输出?
追问 部分成功、全量事务、重复 ID 和单项错误怎样表达?为什么一个超大数组可能需要异步任务或大小限制?
字段选择、嵌套展开和 include 参数有什么风险?
追问 减少响应体与泄露关联对象之间如何权衡?字段白名单和权限校验应在哪一层完成?
查询参数改变后,缓存和 ETag 应如何考虑?
追问 不同用户、权限和筛选条件是否能共享同一个缓存?Vary、授权头和个性化响应怎样影响缓存设计?