当前位置: 首页 > 后端技术 > Node.js

axios-mock-adapter(使用注意)

时间:2023-04-03 20:22:24 Node.js

使用mock模拟项目api原理使用axios发起请求使用axios-mock-adapter处理拦截请求核心实现代码#mockcreatesconstMockAdapter=require('axios-mock-适配器');constaxios=require('axios');constMock=newMockAdapter(axios);Mock.onGet("/api/super-store/big-discounts").reply(async()=>{try{return[200,bigDiscountList];}catch(err){console.error(err);return[500,{message:"内部服务器错误"}];}});##replay是回复,模拟你请求后的响应##get使用onGetpost使用onPost##定时写mock.onGet(/\/users\/\d+/)##如果带参数请求,函数中mockreplay应该这样写(config)=>{JSON.parse(config.data)//你可以用它来解析axios传过来的值}##如果你想模拟网络延迟,varmock=newMockAdapter(axiosInstance,{delayResponse:2000});##如果要引入很多mock接口,并且都匹配这些请求例如:constMockAdapter=require('axios-mock-adapter');constaxios=require('axios');constMock=newMockAdapter(axios);导入"./server/furniture-shop/productsDB";import"./server/grocery3-shop/productsDB";import"./server/related-products/productsDB";Mock.onAny().passThrough();//这个是matchallrequestssaxios-mock-adapter学习链接:https://www.npmjs.com/package过程中可能出现的问题...FAQerror-Error:connectECONNREFUSED127.0.0.1:80你写的axios请求url可能是/api/等,如果没有前缀,请求会从你的80端口发送default你也可以使用axios.defaults.baseURL='modifyyourdefaultrequesturl'来造成这种情况1.你的mock可能没有把文件放在类似index的文件中,也就是你需要使用mock数据的文件。2.如果你使用的框架是react,vue或者是两者结合的遍历框架,比如nextjs等,同样需要找到相应的文件添加,或者类似app.json在主文件中全局引入。js