You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用axios-mock-adapter后仅Mock请求生效,如何兼顾真实API?

解决axios-mock-adapter拦截真实API的问题

你遇到的核心问题很明确:axios-mock-adapter默认会拦截所有未被显式Mock的请求,导致真实API无法正常调用;而调用mock.restore()会完全移除Mock拦截器,连你需要的Mock接口也跟着失效了。

这里有个精准的解决方案——使用passThrough()方法,让未被Mock匹配的请求直接透传到真实服务器,这样就能同时保留Mock接口和正常调用真实API了。

修改后的代码示例

import * as axios from 'axios';
import MockAdapter from 'axios-mock-adapter';
const mainConfig = require('../../../config/main.js');

const request = (axios as any).create({
  baseURL: mainConfig.apiBaseUrl,
  headers: {
    'Content-Type': 'application/json',
  },
});

const mock = new MockAdapter(request);
// 配置需要Mock的接口
mock.onGet('basket').reply(200, {
  // 这里放入你的Mock响应数据
  items: [],
  total: 0
});

// 关键设置:让所有未被Mock匹配的请求直接走真实服务器
mock.onAny().passThrough();

export default request;

额外技巧:针对特定真实API透传

如果你不想让所有未Mock的请求都透传,只想放行特定的真实API,可以单独配置:

// 只允许这个特定的真实API请求通过
mock.onGet('/api/user/profile').passThrough();

关于Mock的其他操作说明

  • 若需要临时清除所有Mock规则(但保留Mock拦截器),可以使用mock.reset();
  • 当完全不需要Mock时,再调用mock.restore()移除整个拦截器即可。

内容的提问来源于stack exchange,提问作者Platon Efimov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:42:41