mockjs和axios一起使用的404问题和请求不生效的问题
一般是这两个地方栽坑
1.这里有个小细节说下,axios.get()方法和axios.post()在提交数据时参数的书写方式还是有区别的。区别就是,get的第二个参数是一个{},然后这个对象的params属性值是一个参数对象的。而post的第二个参数就是一个参数对象。两者略微的区别要留意哦!(很多文章作者栽坑处,本人也栽过)
- 注意请求的 url的 “/” ,请求中是这样 ‘api/user/login’.mock中是这样’/api/user/login’ ,
因为mockjs的缺点.直接拦截xhr,所以只能通过clg来打印进行调试bug。依次console.log.按照数据的流向来clg
1.组件分派action
2.action调用api电路板
3.请求封装函数
4.拦截器
5.mock文件的mock函数的config对象打印出来请求主体
mockjs缺点
mock的原理是: 拦截了所有的请求并代理到本地,然后进行数据模拟,所以你会发现 network
中没有发出任何的请求。
但它的最大的问题是就是它的实现机制。它会重写浏览器的XMLHttpRequest
对象,从而才能拦截所有请求,代理到本地。大部分情况下用起来还是蛮方便的,但就因为它重写了XMLHttpRequest
对象,所以比如progress
方法,或者一些底层依赖XMLHttpRequest
的库都会和它发生不兼容,可以看一下vue-element-admin这个项目的issues,就知道多少人被坑了。
它还有一个问题是,因为是它本地模拟的数据,实际上不会走任何网络请求。所以本地调试起来很蛋疼,只能通过console.log
来调试。就拿vue-element-admin
来说,想搞清楚 getInfo()
接口返回了什么数据,只能通过看源码或者手动 Debug
才能知道。
总结mock的2个缺点:
-
比如
progress
方法,或者一些底层依赖XMLHttpRequest
的库都会和它发生不兼容,可以看一下vue-element-admin项目的issues,就知道多少人被坑了 -
因为是它本地模拟的数据,实际上不会走任何网络请求。所以本地调试起来很蛋疼,只能通过
console.log
来调试。就拿vue-element-admin
来说,想搞清楚getInfo()
接口返回了什么数据,只能通过看源码或者手动Debug
才能知道。