开始之前

重试逻辑很难靠稳定成功的接口验证。本例让同一个临时地址先失败一次,随后成功。序列按接口共享,不按浏览器或用户隔离;开始前请为本次测试创建一个全新地址。

边看边操作在 临时 Mock API 中打开实际工作区
01

创建两个响应项

将下面配置创建为新接口。第一次实际调用预期得到 503,之后重复最后一项 200。配置里的 attempt 是固定演示值,不是服务器实时计算的计数。

示例
{
  "replies": [
    {
      "status": 503,
      "delay_ms": 0,
      "body": {
        "attempt": 1,
        "ok": false
      }
    },
    {
      "status": 200,
      "delay_ms": 0,
      "body": {
        "attempt": 2,
        "ok": true
      }
    }
  ]
}
02

不要先点击测试按钮

“发送一次 GET”、curl、页面自动请求都会消耗响应项。复制地址后直接交给下面实验;若已预览过,重新创建接口恢复起点。OPTIONS 预检不消耗响应序列。

03

按顺序发出三次请求

替换地址,在自己的开发页面运行。请求串行 await,避免完成顺序与到达顺序混淆。预期打印 503、200、200。

示例
const endpoint = '替换为全新接口地址';
for (let i = 1; i <= 3; i++) {
  const response = await fetch(endpoint, { credentials: 'omit' });
  console.log(i, response.status, await response.json());
}
04

接入有限重试逻辑

重新创建一个地址供应用测试。仅在你的业务允许重试时重试,设置次数上限和退避间隔;对真实支付或创建订单请求,还要考虑幂等性,不能因为 Mock 重试成功就直接重复生产写操作。

为什么第一下就是 200

先检查是否点过 GET、浏览器组件是否重复挂载、其他同事是否用了同一地址。所有实际调用共享序列;并发时按服务端预留响应的顺序分配,而不保证按完成时间返回。重新创建地址比猜测已用到第几项更可靠。

接口层限流与模拟状态的区别

调用过密还可能触发平台自己的 429。请用少量串行请求验证业务序列,不要把压力测试混进这个实验。地址过期或服务重启后会失效,需要新建。

临时接口的支持范围

最多 5 个响应,每个 body 为有效 JSON 且不超过 16 KiB,delay_ms 为 0–5000,status 为 200–599 且不含 304。配置上传到服务器内存,地址最长保留 30 分钟,重启会提前清除。持有地址的人可读取响应;只放测试数据。请求正文不保存,也不会改变你配置好的响应。

要点总结
  • 每个独立实验使用全新地址。
  • 最后一个响应会重复,不会循环到第一项。
  • 前端重试必须有上限,并考虑真实业务幂等性。