返回契约只写一次
HTTP status、业务 code、字段改名和自定义 error 都放进带类型的 envelope。
选择一种后端响应,运行仓库里的真实 createHttp,对比原始 response 与 Promise resolve/reject 的最终结果。
createHttp()HTTP 200{
"status": 200,
"body": {
"code": 200,
"msg": "ok",
"data": {
"id": 42,
"name": "Ada"
}
}
}等待运行// 运行后在这里查看 resolve 值或 BizErrorconst 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>。应用状态仍由调用方管理。
一份代码串起认证、语言、业务状态码、query function、文件下载和渐进迁移。
02 / 返回协议定义 response contract覆盖 HTTP-only 默认行为、显式 envelope、字段改名、自定义 error 和预期失败 body。
03 / Transport保持 adapters 可替换baseURL、query、timeout 和错误规则由统一层处理,adapter 只负责发送请求。
只有两三个普通请求的项目可以继续使用 fetch 或 axios。多个接口或多个应用需要统一 response 解构、业务失败、公共 headers、adapter 行为和调用方返回值时,envoi 才开始节省维护成本。