校验 Validation
作品投稿请求经过 Validation 规则检查,形成 validated 或可处理的 INVALID_INPUT。
后端与接口约 10 分钟 · 从真实需求理解
1Validation 如何处理作品投稿?
projectIdp-482workUrl作品链接note投稿说明
VALIDATEboundary rules
·Input只接受必要字段·Trusted contextuserId 来自会话·Boundary不接受客户端伪造状态
Input 只携带必要字段,尚未进入边界。
Validation 处理作品投稿请求:读取请求输入和会话上下文,Validate 后返回 validated 或稳定错误。
- 可信身份来自会话,不接受客户端伪造 ownerId、reviewStatus、reviewerId 或 score。
- Validation 只检查自己的输入边界,不把资格、截止时间和重复投稿等无关业务规则复制到每个入口。
2Validation 与 Handler、API Contract 如何分工?
Validation 只承担自己的协议边界,Handler 编排入口,API Contract 描述调用者可观察的输入和输出。
- Validation 不等于 Handler:处理器编排入口,Validation 保持输入规则和错误映射边界。
- Validation 不等于 API Contract:契约描述调用者看到什么,Validation 负责检查能否进入下一步。
- 不要把资格、截止时间、重复投稿等无关规则复制到每个入口。
3Validation 由哪些可验收部件组成?
projectIdp-482workUrl作品链接note投稿说明
边界规则与可信上下文
- ✓TrusteduserId from session
- ✓Boundaryserver-owned
- ✓Error422 INVALID_INPUT
失败映射为 422 INVALID_INPUT,结果仍保持稳定。
每个部件都指向真实 DOM 中的一段投稿验证证据。
- Input 说明接收什么,Validate 说明执行哪些边界规则,Accepted 说明如何形成稳定结果。
- 可信上下文来自服务端会话,而不是客户端隐藏字段。
4Validation 正常与失败时会返回什么?
正常投稿通过
ValidationPOST /api/projects/:projectId/submissions
validatedValidation 通过
失败请求被稳定映射
ValidationPOST /api/projects/:projectId/submissions
INVALID_INPUTValidation 拒绝请求
两个案例保持作品投稿场景,只改变当前输入规则是否通过。
- 正常路径返回 200 OK validated。
- 失败路径返回 422 INVALID_INPUT INVALID_INPUT,不泄露内部堆栈。
5什么时候需要显式设计 Validation?
局部任务
单入口
规则只在唯一调用点使用。
共享边界
公开投稿
把 Validation 提取为可测试边界。
是否需要 Validation,要看它是否跨入口复用并有清晰的失败语义。
- 一次性局部逻辑可以留在唯一调用点附近。
- 公开投稿接口和多个入口共享的规则,应把 Validation 作为可测试边界。
6怎样把 Validation 约束交给 Agent?
请实现作品投稿 Validation:围绕 POST /api/projects/:projectId/submissions 的 Validation 边界,只读取 projectId、workUrl、note 和会话上下文,不接受客户端伪造 ownerId、reviewStatus、reviewerId 或 score;Validation 通过时返回 200 OK validated,失败映射为 422 INVALID_INPUT INVALID_INPUT。不要把无关业务规则堆进这一层。运行定向内容检查、语义检查、typecheck、迁移核对和真实页面验收。
7不用背,看看你能不能判断
1 / 3
Validation 主要保证什么?
请选择一个最符合题意的答案
社区延伸
看别人真实遇到过什么
社区帖子还没有关联到这个词条。