以下仅仅是自己开发实践中的一点想法,如有错误,请指正:
uniapp开发中,对于h5应用,通常可以使用mocker-api和mockjs来拦截网络请求,但是APP一般都说不支持,我们开发中主要以app为主,有时候需要mock数据做演示包,思考了很久,突然发现uniapp中有一个拦截器,感觉可以用其来实现数据的mock,思路如下:
/**
* app mock思路
* 常规的拦截只支持h5,不支持app
* 可以使用uni自带的拦截器,利用不存在的网址快速失败从而mock结果数据
* 接口虽然失败,但是业务可以拿到mock数据
*/
let otherMockFlag = true;
uni.addInterceptor('request', {
invoke(args) {
// request 触发前拼接 url
let mockUrl = '${可以复用自定义的mockjs}'
if(otherMockFlag && args.url === mockUrl){
args.url = 'http://localhost/mock' + args.url;
//快速失败
args.timeout = 1;
//模拟接口延迟1000毫秒
setTimeout(() => {
//可以从mockjs自定义的api里面提取数据
args.success({
data: {
code: 0,
data: {
a:1,
b:2
}
}
})
},1000)
}
},
success(args) {
//console.log(JSON.stringify(args));
},
fail(err) {
//console.log('interceptor-fail',err)
},
complete(res) {
//console.log('interceptor-complete',res)
}
})
打包app测试,可以mock数据,就是不知道这样有没有其它的问题
0 个评论
要回复文章请先登录或注册