Concepts

钩子(Hooks)

BitRouter 背后的流水线模型——请求流经一系列有序阶段,每个钩子都可以放行、拒绝、改写或观测它。

钩子(Hook)是在请求流经路由器的某个特定点上运行的回调。BitRouter 把每个请求都作为一条有序的阶段流水线来处理;钩子挂接到这些阶段上,并依阶段不同,一个钩子可以放行、拒绝、改写或观测该请求。插件把钩子捆绑起来并安装。

language-model 流水线

language_model 流水线按顺序运行五类钩子:

  1. PreRequest —— 鉴权、策略、限速、余额与护栏检查。每个都返回放行拒绝;第一个拒绝会终止流水线并映射为一个 HTTP 状态码。
  2. Route —— 解析或改写该请求的有序路由目标链。
  3. Execution —— 观测每一次尝试,并在成功或失败时控制回退。
  4. Stream —— 拦截流式响应分片,以改写、丢弃或中止它们。
  5. Observe —— 在每个阶段边界上的只读观测;它从不影响请求,且此处的失败也无法破坏请求。

结算(settlement)——计量、计费与回执——在请求完成后针对一个不可变的上下文运行。

trait 签名及完整示例,见 构建插件

How is this guide?

On this page