上一篇有记录过uni-app中网络的工具类,这里记录的是另外一种实现方式---基于Fly.js封装api工具类javascript
Fly.js 是一个基于 promise 的,轻量且强大的Javascript http网络库,适合多端开发引用,有点就是支持请求/响应拦截器, 自动转换 JSON 数据....java
1.首先安装npm
npm install flyio / yarn add flyio
复制代码
2.封装工具类api
import Fly from "flyio/dist/npm/wx";
let fly = new Fly,
hostMap = {
'development': 'https://www.baidu.test.com',
};
//配置请求基地址
fly.config.baseURL = hostMap[process.env.NODE_ENV] || 'https://www.baidu.com';
fly.config.timeout = 10000;
// //添加请求拦截器
fly.interceptors.request.use((config, promise) => {
const AUTH_TOKEN = wx.getStorageSync('AUTH_TOKEN');
if(!AUTH_TOKEN){
console.error('未获取到TOKEN');
}
config.headers.token = AUTH_TOKEN;
return config;
})
fly.interceptors.response.use(
(response, promise) => {
if(response.data && response.data.success){
return response.data.data;
}else{
if(response.data && (response.data.code == '10000005' || response.data.code == '10000003')){
let pages = getCurrentPages();
let currentPage = pages[pages.length-1];
if(currentPage.route != 'pages/daka/homePage/main'){
wx.navigateTo({
url: '/pages/daka/homePage/main'
});
return promise.reject('');
}
}else{
if(response.data && response.data.message){
wx.showModal({
title: '提示',
showCancel: false,
content: response.data && response.data.message
});
}
return promise.reject('');
}
}
},
(err, promise) => {
wx.hideLoading();
console.warn(err);
wx.showModal({
title: '提示',
showCancel: false,
content: '网络不流畅,请稍后再试!'
});
}
)
export default fly
复制代码
import fly from "./fly";
const Api = {
login: param => {
return fly.get(`api/loign?${param}`);
}
}
export default Api
复制代码