• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

mpvue中使用flyjs全局拦截的实现代码

vue 搞代码 4年前 (2022-01-08) 15次浏览 已收录 0个评论

这篇文章主要介绍了mpvue中使用flyjs全局拦截的实现代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

我们安装好flyio之后

 npm install flyio

找到src目录下的main.js文件

首先引入flyjs并实例化

 var Fly=require("flyio/dist/npm/wx") var fly=new Fly

比方说我们每次请求我们自己的服务器接口的时候需要带上appID,用户登陆后需要带上openId

 // 请求拦截 fly.interceptors.request.use((request)=>{ request.body.appId = 'xxx' // 用户的openId在获取之后添加到全局变量中如果存在,我们将它添加到请求参数里面 let openId = Vue.prototype.globalData.openId; if(openId){ request.body.openId = openId } }) 

当服务器发生错误,或者用户网络错误导致请求失败的时候,我们可以添加一个响应拦截

 // 响应拦截 fly.interceptors.response.use( (response) => { }, (err) => { //发生网络错误后会走到这里 //return Promise.resolve("ssss") wx.hideLoading(); wx.showToast({ title:'网络不流畅,请稍后再试!', icon:'none', }); }) 

最后将flyjs挂载到vue的原型上

 // 将fly挂载在Vue的原型上 Vue.prototype.$flyio = fly 

不同页面直接使用this.$flyio请求(是不是很方便)

示例:

fly里面的拦截机制还是很强大的,并且在错误返回信息做了优化处理,在fly拦截器中支持执行异步任务,就是说在请求数据的时候如果拦截到token不存在那么我们就可以在拦截器中重新获取token,再接着执行之前的请求。

 const Fly = require("flyio/dist/npm/wx") const fly = new Fly Vue.prototype.$http = fly; fly.interceptors.request.use((request) => { //给所有请求添加自定义header if (api.Get('token')) { request.timeout = 30000, request.headers = { "content-type": "application/json", "cld.stats.page_entry": api.Get('scene'), "version": store.state.version, "token": api.Get('token') } wx.showLoading({ title: "加载中", mask: true, }); return request; } else { fly.lock();//锁住请求 return Public.Load().then(res => { request.timeout = 30000, request.headers = { "content-type": "application/json", "cld.stats.page_entry": api.Get('scene'), "version": store.state.version, "token": api.Get('token') } wx.showLoading({ title: "加载中", mask: true, }); //等待token返回之后在解锁, fly.unlock(); return request;//继续之前的请求, }) } }) fly.interceptors.response.use( (response) => { wx.hideLoading(); return response }, (err) => { wx.hideLoading(); if (err.status == 0) { return "网络连接异常" } else if (err.status == 1) { return "网络连接超时" } else if (err.status == 401) { return "用户未登录" } else { i<p>本文来源gao!%daima.com搞$代*!码$网9</p>f (err.response.data.message) { return err.response.data.message } else { return '请求数据失败,请稍后再试' } }; // Do something with response error } )

以上就是mpvue中使用flyjs全局拦截的实现代码的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:mpvue中使用flyjs全局拦截的实现代码

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址