最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

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

来源:懂视网 责编:小采 时间:2020-11-27 22:07:51
文档

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

mpvue中使用flyjs全局拦截的实现代码:我们安装好flyio之后 npm install flyio 找到src目录下的main.js文件 首先引入flyjs并实例化 var Fly=require(flyio/dist/npm/wx) var fly=new Fly 比方说我们每次请求我们自己的服务器接口的时候需要带上appID,用户登陆后需要带上openId
推荐度:
导读mpvue中使用flyjs全局拦截的实现代码:我们安装好flyio之后 npm install flyio 找到src目录下的main.js文件 首先引入flyjs并实例化 var Fly=require(flyio/dist/npm/wx) var fly=new Fly 比方说我们每次请求我们自己的服务器接口的时候需要带上appID,用户登陆后需要带上openId

我们安装好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 {
 if (err.response.data.message) {
 return err.response.data.message
 } else {
 return '请求数据失败,请稍后再试'
 }
 };
 // Do something with response error
 }
)

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

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

mpvue中使用flyjs全局拦截的实现代码:我们安装好flyio之后 npm install flyio 找到src目录下的main.js文件 首先引入flyjs并实例化 var Fly=require(flyio/dist/npm/wx) var fly=new Fly 比方说我们每次请求我们自己的服务器接口的时候需要带上appID,用户登陆后需要带上openId
推荐度:
标签: 拦截 js fly
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top