数据转换
package version >0.4.0
shadcn any version
author: cmtlyt
update time: 2026/04/08 15:42:00
支持请求和响应的数据转换,提供灵活的数据处理能力。
特性
- 请求转换: 使用
tdto在请求前转换数据 - 响应转换: 使用
tvo在响应后转换数据 - 请求拦截: 使用
onRequest拦截请求 - 响应拦截: 使用
onResponse拦截响应 - 类型安全: 完整的 TypeScript 类型支持
- 链式处理: 支持多个转换函数的链式调用
基础用法
请求前转换数据 (tdto)
响应后转换数据 (tvo)
高级用法
完整的数据转换流程
请求拦截 (onRequest)
network 模式下 onRequest 接收待发送的 Request,可以就地修改它,也可以返回一个新的 Request 来替换原请求:
返回 Response 可以直接短路请求,不再发起真实网络请求(响应仍会走 onResponse/parser/tvo):
带 body 的请求若在 hook 中读取过 body,需要基于 url 重建 Request,不能直接用原 Request 作为构造参数(其 body 流已被消费):
响应拦截 (onResponse)
Mock 数据开发
在 API Map 中使用
Hook 执行顺序
数据转换 Hook 的执行顺序:
- tdto - 请求前转换数据
- onRequest - 请求拦截
- onResponse/parser - 响应拦截/解析
- tvo - 响应后转换数据
注意事项
⚠️ 数据转换
tdto在请求前执行,用于转换请求数据tvo在响应后执行,用于转换响应数据onRequest在请求发送前执行,可以修改请求配置onResponse在响应解析后执行,可以修改响应数据onResponse会覆盖parser的解析方式
⚠️ onRequest 的返回值语义随请求模式变化
⚠️ 行为变更
network模式此前不会执行onRequest- 若此前在共享配置中定义
onRequest仅用于mock模式,升级后它在network模式下也会被执行 - 这类 hook 返回裸数据对象时会被忽略并输出告警,可在 hook 内通过
config.requestMode区分处理
⚠️ Mock 模式
mock模式会使用onRequest返回的数据作为响应network模式会发送真实的网络请求- 可以通过
requestModeMap自定义请求模式 - 自定义请求模式会绕过默认的 hook 链
🔧 类型安全
- 所有转换函数都支持完整的 TypeScript 类型
- 建议为转换函数的参数和返回值指定明确的类型
- 使用类型断言时要小心,确保类型安全
🔧 错误处理
- 转换函数中抛出的错误会被捕获并传递到调用方
- 建议在转换函数中添加适当的错误处理逻辑
- 可以使用 try-catch 来处理转换过程中的错误