uni.addInterceptor(STRING, OBJECT)
uni.removeInterceptor(STRING)
STRING就是拦截器要拦截的api的名称
下面写了一个请求拦截器和一个路由拦截器(代码应该放在项目的main.js入口文件中)
请求拦截器可以用来集中管理请求地址(写在invoke中,直接修改url),也可以实现一些比如如果请求失败,可以搞一个全局的网络错误弹框之类的功能
uni.addInterceptor('request', {
invoke(args) {
args.url = "http://localhost:8081"+args.url
args.header =
{
'content-type': 'application/json' ,
'Cookie': uni.getStorageSync('cookieKey')?uni.getStorageSync('cookieKey'):''
}
console.log('invoked')
},
success(args) {
// 请求成功后,修改code值为1
args.data.code = 1
console.log("success->",args)
},
fail(err) {
},
complete(res) {
console.log('interceptor-complete',res)
}
})
路由拦截器,主要用于实现导航守卫的功能,可以在每次跳转之前,验证一下身份,验证不成功跳转到登陆也。要注意需要设置一个相当于递归出口的地方,比如首页,不然会一直死循环。
uni.addInterceptor('navigateTo', {
invoke(args) {
console.log('invoke->',args.url)
if(args.url.search('pages/index/index')==-1){
if(false){
this.args.url = '/pages/index/index'
}
}
},
success(args) {
console.log("success->",args)
},
fail(err) {
},
complete(res) {
console.log('interceptor-complete',res)
}
})