Skip to content

envoi调用方只拿 T。

一个与框架无关的 HTTP response layer。业务状态码、hooks 和 adapters 配置一次,所有 API 都暴露 Promise

envoi 打开的信封标记
协议实验台

后端响应如何转换为业务数据或 BizError

选择一种后端响应,运行仓库里的真实 createHttp,对比原始 response 与 Promise resolve/reject 的最终结果。

真实 envoi clientcreateHttp()
场景Envelope 成功解包 data
真实请求管线HTTP 200 · OK
后端 responseOK
HTTP 200
{
  "status": 200,
  "body": {
    "code": 200,
    "msg": "ok",
    "data": {
      "id": 42,
      "name": "Ada"
    }
  }
}
envoi 输出
等待运行
// 运行后在这里查看 resolve 值或 BizError
解包 data等待运行

一个客户端,四层职责

ts
const instance = createAxiosInstance({ withCredentials: true });
const http = createHttp({
  adapter: axiosAdapter(instance),
  defaults: { baseURL: "/api", timeout: 15_000 },
  envelope: { code: "code", msg: "msg", data: "data" },
  hooks: { onRequest: auth(getToken), onResponseError: showError },
});

request hooks 准备请求,adapter 执行 HTTP,项目选择的 response policy 产出 Promise<T>。应用状态仍由调用方管理。

可以直接落到项目里的案例

重复逻辑开始影响行为时再引入

只有两三个普通请求的项目可以继续使用 fetch 或 axios。多个接口或多个应用需要统一 response 解构、业务失败、公共 headers、adapter 行为和调用方返回值时,envoi 才开始节省维护成本。

端到端案例从一份可以上线的客户端开始。
查看完整案例 →

基于 MIT License 发布。