Web 开发里有一种常见痛点:
- 路由散
- 参数校验散
- 权限判断散
- 状态共享方式混乱
- 错误处理风格不统一
- 代码里到处是“先判断这个再判断那个”的流水账
在小项目里,问题不大。
可一旦系统变成真正的业务发射场:
- 有鉴权
- 有配置
- 有共享状态
- 有数据库
- 有多种输入格式
- 有严格失败路径
- 有异步调用和大量并发
你就会发现,真正可怕的不是“不会写 handler”。
真正可怕的是:
每个 handler 都在重复做不同版本的发射前检查。
Rocket 的回答非常直接:
把“发射前检查”变成框架第一等公民。
也就是:
- 路由声明进属性宏
- 参数提取进类型
- 请求检查进 request guard
- 共享状态进 managed state
- 全局挂钩进 fairing
- 失败出口进统一错误响应
于是 handler 可以越来越像:
“所有发射前条件都满足后,真正执行这次发射任务”而不是:
“先 if 一堆,再 match 一堆,再拆 header/body/path/query,再处理业务”