Request
规划 API: 本页说明 request client 的最终用户用法。
commflow@0.0.2尚未导出 request runtime;不要将本页 import 当作当前生产导入。当前可运行导出见 当前版本快速开始。
适用场景
request 适合一次性请求/响应通信:
创建 client
发送 GET 请求
request 默认保留 fetch() 风格:HTTP 4xx/5xx 是响应,不是 transport error。用户应通过 response.ok、状态码或项目封装判断业务失败。
发送 POST 请求
POST、PATCH 这类写操作默认不应随意重试。PUT、DELETE 虽然通常具备幂等语义,也应结合业务 idempotency key 和服务端保障再启用更积极的 retry。
Body、query 与 Content-Type
request helper 的默认规则:
使用 target 管理多个服务
target 让用户按服务名组织请求,避免业务代码到处拼不同服务地址。
单次调用覆盖配置
覆盖顺序:
timeout 未设置时不添加 commflow 层超时;retry 未设置时为 0;requestIdHeader 默认使用 x-request-id。
取消与 signal
当用户传入 signal 且同时设置 timeout 时,commflow 会把两者合并;任意一侧先触发都会取消请求,并抛出 kind: 'aborted' 或 kind: 'timeout' 的结构化错误。
注入请求上下文
上下文适合放 requestId、tenant、trace metadata 等跨调用信息。业务参数不应塞进上下文,应作为请求 body、query 或 headers 明确传递。
使用生命周期 hook
hook 用于日志、trace、headers 注入和诊断,不建议承载核心业务分支。详细边界见 配置指南。
错误处理
错误模型见 错误与重试。
与 VextJS 的关系
VextJS 接入优先从 request 能力切入:迁移时必须保留 app.fetch 的 timeout、retry、proxy、request context 和 hook 行为。详见 接入 VextJS。