每增加一个接口,逐项检查。
契约#
- 方法和路径表达的资源/操作清楚且命名一致。
- 写明路径参数、查询参数、请求体与响应体。
- 成功和常见失败状态码准确。
- 列表接口有分页、排序和最大页大小限制。
- 日期时间格式和时区约定一致。
输入与数据#
- 验证类型、必填、长度、范围、枚举和格式。
- 拒绝或忽略规则明确的额外字段,防止批量赋值漏洞。
- SQL 全部参数化。
- 数据库存在非空、唯一、外键、检查等必要约束。
- 多步写操作使用事务,并测试回滚。
认证与授权#
- 明确此接口是否必须登录。
- 认证失败返回 401;权限不足返回 403。
- 按资源所有权或角色授权,且在服务端执行。
- 用户不能通过修改 ID 读取或修改他人的数据。
- 敏感操作有频率限制或额外保护。
响应、错误与隐私#
- 不返回密码哈希、密钥、内部堆栈、原始 SQL。
- 错误格式一致,并提供可追踪的请求 ID。
- 日志不记录密码、完整 Token 或敏感个人信息。
- 404 不泄露不必要的资源存在性信息。
质量#
- 正常路径有测试。
- 无效输入、未登录、越权、不存在、冲突有测试。
- 文档示例与实际响应一致。
- 慢查询检查过执行计划并有合理索引。