上一篇有記錄過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
複製代碼