nuysoft / Mock

A simulation data generator
http://mockjs.com
Other
19.53k stars 2.66k forks source link

在axios下,返回的数据不是json格式? #171

Open seekwe opened 7 years ago

seekwe commented 7 years ago

rt

JounQin commented 7 years ago

…… 这明显跟 Mock 无关啊,自己看 axios 的配置,而且 axios 默认的 responseType 也是 json

seekwe commented 7 years ago

@JounQin 那就奇怪了,因为responseType也手动设置为json,而且访问真实接口是json格式没错,就mock拦截之后返回是是纯字符串要手动去转换成json,我再找找问题吧

BillionChen commented 7 years ago

transformResponse 在axios中设置了这个属性的过滤方法之后,返回的参数就变成了string,去掉的话就变成json

lgy87 commented 6 years ago

@seekwe @BillionChen 同样遇到了这个问题,因为之前没有接触过 mockjs,只使用 axios。

我在 transformResponse 中设置了过滤器,responseType 设置成了 json. 之前一切都正常。

但是,某同事某个提交之后,transformResponse 中的过滤器拿到的 resp 一直都是string,不是json。 然后我就开始了漫长的艰苦卓绝的排bug历程。因为他们用mockjs 是想用来 mock数据的,我怎么也没有想过引入这个库,竟然能影响的业务代码。:(

@JounQin 同学说明显和mock无关,估计应该是理解成了 楼主 没有 设置 responseType。其实不是这样。

我的观点是,这肯定是mockjs的bug, 而且我觉得一个库的引入,不应该是影响 全局的接口 ,我注意到源码中备份了XMLHttpRequest,我在想是不是重新实现的和原生的有偏差?(理解偏差的话,请见谅哈)

请 @nuysoft 辟谣。

omlou commented 3 years ago

这个就是mockjs的bug原生的responseType对它根本不起作用,这玩意就兼容了jQuery。我不知道这么简单的一个功能玩这么多花样干嘛,有机会自己封装一个吧

wll8 commented 3 years ago

小伙子火气有点大,来根华子压压惊。 mockjs 造数据啥的还是很强的。

ygweric commented 1 year ago

这个仓库已经不维护了,我fork了一份已经解决,可以使用我fork的仓库 tony-mockjs

npm i tony-mockjs

我的代码里里面使用了threejs,具体的responseType值会是 text|ArrayBuffer|json,目前工作良好

具体核心代码如下

image