/**
* 攔截器(請求之前調(diào)用)
* @fn: 請求函數(shù)
*/
function wxPromisify(fn) {
? ? return function(obj = {}) {
? ? ? ? // 開啟動畫效果
? ? ? ? wx.showLoading({
? ? ? ? ? ? title: '加載中'
? ? ? ? });
? ? ? ? return new Promise((resolve, reject) => {
? ? ? ? ? ? obj.success = function(res) {
? ? ? ? ? ? ? ? // 成功回調(diào)
? ? ? ? ? ? ? ? if (res.statusCode == '200') {
? ? ? ? ? ? ? ? ? ? // 關閉動畫效果
? ? ? ? ? ? ? ? ? ? wx.hideLoading();
? ? ? ? ? ? ? ? ? ? if (res.data.errorCode == 10102) {
? ? ? ? ? ? ? ? ? ? ? ? wx.showToast({
? ? ? ? ? ? ? ? ? ? ? ? ? ? title: res.data.message,
? ? ? ? ? ? ? ? ? ? ? ? ? ? icon: 'none',
? ? ? ? ? ? ? ? ? ? ? ? ? ? duration: 3000
? ? ? ? ? ? ? ? ? ? ? ? });
? ? ? ? ? ? ? ? ? ? ? ? setTimeout(function() {
? ? ? ? ? ? ? ? ? ? ? ? ? ? // 跳轉到登錄頁面
? ? ? ? ? ? ? ? ? ? ? ? ? ? wx.redirectTo({
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? url: '/pages/login/login',
? ? ? ? ? ? ? ? ? ? ? ? ? ? });
? ? ? ? ? ? ? ? ? ? ? ? }, 2000);
? ? ? ? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? ? ? ? ? resolve(res.data);
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? ? ? switch (res.statusCode) {
? ? ? ? ? ? ? ? ? ? ? ? case 400:
? ? ? ? ? ? ? ? ? ? ? ? ? ? console.log('錯誤請求');
? ? ? ? ? ? ? ? ? ? ? ? ? ? wx.showToast({
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? title: '錯誤請求',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? icon: 'none',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? duration: 3000
? ? ? ? ? ? ? ? ? ? ? ? ? ? });
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? case 401:
? ? ? ? ? ? ? ? ? ? ? ? ? ? console.log('未授權赫冬,請重新登錄');
? ? ? ? ? ? ? ? ? ? ? ? ? ? wx.showToast({
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? title: '未授權,請重新登錄',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? icon: 'none',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? duration: 3000
? ? ? ? ? ? ? ? ? ? ? ? ? ? });
? ? ? ? ? ? ? ? ? ? ? ? ? ? // 跳轉到登錄頁面
? ? ? ? ? ? ? ? ? ? ? ? ? ? wx.redirectTo({
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? url: '/pages/login/login',
? ? ? ? ? ? ? ? ? ? ? ? ? ? });
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? case 403:
? ? ? ? ? ? ? ? ? ? ? ? ? ? console.log('拒絕訪問');
? ? ? ? ? ? ? ? ? ? ? ? ? ? wx.showToast({
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? title: '拒絕訪問',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? icon: 'none',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? duration: 3000
? ? ? ? ? ? ? ? ? ? ? ? ? ? });
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? case 404:
? ? ? ? ? ? ? ? ? ? ? ? ? ? console.log('請求錯誤栖茉,未找到該資源');
? ? ? ? ? ? ? ? ? ? ? ? ? ? wx.showToast({
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? title: '請求錯誤舍杜,未找到該資源',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? icon: 'none',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? duration: 3000
? ? ? ? ? ? ? ? ? ? ? ? ? ? });
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? case 405:
? ? ? ? ? ? ? ? ? ? ? ? ? ? console.log('請求方法未允許');
? ? ? ? ? ? ? ? ? ? ? ? ? ? wx.showToast({
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? title: '請求方法未允許',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? icon: 'none',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? duration: 3000
? ? ? ? ? ? ? ? ? ? ? ? ? ? });
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? case 408:
? ? ? ? ? ? ? ? ? ? ? ? ? ? console.log('請求超時');
? ? ? ? ? ? ? ? ? ? ? ? ? ? wx.showToast({
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? title: '請求超時',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? icon: 'none',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? duration: 3000
? ? ? ? ? ? ? ? ? ? ? ? ? ? });
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? case 500:
? ? ? ? ? ? ? ? ? ? ? ? ? ? console.log('服務端出錯');
? ? ? ? ? ? ? ? ? ? ? ? ? ? wx.showToast({
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? title: '服務端出錯',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? icon: 'none',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? duration: 3000
? ? ? ? ? ? ? ? ? ? ? ? ? ? });
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? case 502:
? ? ? ? ? ? ? ? ? ? ? ? ? ? console.log('網(wǎng)絡錯誤');
? ? ? ? ? ? ? ? ? ? ? ? ? ? wx.showToast({
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? title: '網(wǎng)絡錯誤',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? icon: 'none',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? duration: 3000
? ? ? ? ? ? ? ? ? ? ? ? ? ? });
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? case 503:
? ? ? ? ? ? ? ? ? ? ? ? ? ? console.log('服務不可用');
? ? ? ? ? ? ? ? ? ? ? ? ? ? wx.showToast({
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? title: '服務不可用',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? icon: 'none',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? duration: 3000
? ? ? ? ? ? ? ? ? ? ? ? ? ? });
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? // 失敗
? ? ? ? ? ? obj.fail = function(res) {
? ? ? ? ? ? ? ? wx.hideLoading(); // 請求超時關閉動畫
? ? ? ? ? ? ? ? wx.showToast({
? ? ? ? ? ? ? ? ? ? title: res.errMsg,
? ? ? ? ? ? ? ? ? ? icon: 'none'
? ? ? ? ? ? ? ? });
? ? ? ? ? ? ? ? reject(res)
? ? ? ? ? ? }
? ? ? ? ? ? fn(obj)
? ? ? ? });
? ? }
}
/**
* 無論Promise對象最后狀態(tài)如何都會執(zhí)行
* @callback: 回到函數(shù)
*/
Promise.prototype.finally = function(callback) {
? ? let p = this.constructor;
? ? return this.then(
? ? ? ? value => P.resolve(callback()).then(() => value),
? ? ? ? reason => P.reject(callback()).then(() => {
? ? ? ? ? ? throw reason
? ? ? ? })
? ? )
}
/**
* 微信請求get封裝
* @url: 接口地址
* @data:以對象的格式傳入
* @token: token
*/
function Get(url, data) {
? ? let Get = wxPromisify(wx.request);
? ? var token = app.globalData.userInfo.token;
? ? return Get({
? ? ? ? url: url,
? ? ? ? method: 'GET',
? ? ? ? data: data,
? ? ? ? header: {
? ? ? ? ? ? 'Access-Token': token
? ? ? ? }
? ? })
}
/**
* 微信請求post封裝
* @url: 接口地址
* @data:以對象的格式傳入
* @token: token
*/
function Post(url, data, token) {
? ? let Post = wxPromisify(wx.request);
? ? return Post({
? ? ? ? url: url,
? ? ? ? method: 'POST',
? ? ? ? data: data,
? ? ? ? header: {
? ? ? ? ? ? "content-type": "application/x-www-form-urlencoded",
? ? ? ? ? ? 'Access-Token': token
? ? ? ? }
? ? })
}
/**
* 微信請求post json封裝
* @url: 接口地址
* @data:以對象的格式傳入
*/
function postJson(url, data) {
? ? let postJson = wxPromisify(wx.request);
? ? var token = app.globalData.userInfo.token;
? ? return postJson({
? ? ? ? url: url,
? ? ? ? method: 'POST',
? ? ? ? data: data,
? ? ? ? header: {
? ? ? ? ? ? 'Access-Token': token
? ? ? ? }
? ? });
}
/**
* 微信請求put封裝
* @url: 接口地址
* @data:以對象的格式傳入
* @token: token
*/
function Put(url, data) {
? ? let Put = wxPromisify(wx.request);
? ? var token = app.globalData.userInfo.token;
? ? return Put({
? ? ? ? url: url,
? ? ? ? method: 'PUT',
? ? ? ? data: data,
? ? ? ? header: {
? ? ? ? ? ? "content-type": "application/x-www-form-urlencoded",
? ? ? ? ? ? 'Access-Token': token
? ? ? ? }
? ? });
}
/**
* 微信請求delete封裝
* @url: 接口地址
* @data:以對象的格式傳入
* @token: token
*/
function Delete(url, data) {
? ? let Delete = wxPromisify(wx.request);
? ? var token = app.globalData.userInfo.token;
? ? return Delete({
? ? ? ? url: url,
? ? ? ? method: 'DELETE',
? ? ? ? data: data,
? ? ? ? header: {
? ? ? ? ? ? "content-type": "application/x-www-form-urlencoded",
? ? ? ? ? ? 'Access-Token': token
? ? ? ? }
? ? });
}
module.exports = {
? ? Post: Post,
? ? postJson: postJson,
? ? Get: Get,
? ? Put: Put,
? ? Delete: Delete
}