Skip to content

拦截 - 模拟数据

用于在开发阶段模拟数据。

引入

ts
import { requestMockInterceptor } from 'rattail/axle'

用法

ts
axle.useRequestInterceptor(
  requestMockInterceptor({
    mappings: [
      {
        url: '/user',
        method: 'get',
        delay: 300,
        handler: () => ({
          data: {
            code: 200,
            data: [
              { id: '1', name: 'Alice' },
              { id: '2', name: 'Bob' },
            ],
          },
        }),
      },
      {
        url: '/user/:id',
        method: 'get',
        handler: () => ({
          data: { code: 200, data: { id: '1', name: 'Alice' } },
        }),
      },
      {
        url: '/user',
        method: 'post',
        delay: 500,
        handler: () => ({
          data: { code: 200, message: 'Created' },
          status: 201,
        }),
      },
    ],
  }),
)

映射选项

选项类型描述
urlstring | ((url: string) => boolean)匹配的 URL,支持 :param 语法或函数
methodstring匹配的 HTTP 方法
delaynumber模拟的响应延迟(毫秒)
handler() => { data: any, status?: number }返回模拟响应数据和可选状态码

函数形式的 URL 匹配

ts
axle.useRequestInterceptor(
  requestMockInterceptor({
    mappings: [
      {
        url: (url) => url.startsWith('/user'),
        method: 'get',
        handler: () => ({
          data: { code: 200, data: [] },
        }),
      },
    ],
  }),
)