请求接口的工具类,上传文件的工具类

uniapp中请求的封装工具类

function request(params, isGetTonken, queuePassby) {
    // 全局变量
    let globalData = getApp().globalData; // 如果正在进行登陆,就将非登陆请求放在队列中等待登陆完毕后进行调用

    if (!isGetTonken && globalData.isLanding && !queuePassby) {
        console.log('正在登录,缓存请求: ' + params.url)
    	globalData.requestQueue.push(params);
    	return;
    }
    if (Object.prototype.toString.call(params.data) == '[object Array]') {
        params.data = JSON.stringify(params.data);
    } else if (Object.prototype.toString.call(params.data) == '[object Number]') {
        params.data = `${params.data}`;
    }
    // let needToken = false;
    // if (params.url.indexOf('/p/') == 0 || params.url.indexOf('/user/registerOrBindUser') == 0 || params.url.indexOf('/hotel/availability/rooms') == 0) {
    //     needToken = true;
    // }
    let isObject = Object.prototype.toString.call(params.data) === '[object Object]';
    // 此处存在params.data是数组的情况, 此情况下直接返回params.data
    params.data = isObject ?
        params.data ? Object.assign(params.data, {
                info: JSON.stringify(util.genInfo()),
            }) : {
                info: JSON.stringify(util.genInfo()),
            }
        : params.data;
    const url = (params.domain ? params.domain : config.domain) + params.url
    wx.request({
        url: url,
        // 接口请求地址
        data:  params.data,
        header: {
            // 'content-type': params.method == "GET" ? 'application/x-www-form-urlencoded' : 'application/json;charset=utf-8',
            // Authorization: !needToken ? undefined : uni.getStorageSync('token') || uni.getStorageSync('tempToken'),
            Authorization: uni.getStorageSync('token') || uni.getStorageSync('tempToken'),
            locale: wx.getStorageSync('lang') || 'zh_CN',
        },
        method: params.method == undefined ? 'POST' : params.method,
        dataType: 'json',
        responseType: params.responseType == undefined ? 'text' : params.responseType,
        success(res) {
            if (res.statusCode == 200) {
                // 如果有定义了params.callBack,则调用 params.callBack(res.data)
                if (params.callBack) {
                    params.callBack(res.data);
                }
            } else if (res.statusCode == 500) {
                if (params.errCallBack) {
                    params.errCallBack(res);
                }
                uni.hideLoading();
                setTimeout(() => {
                    uni.showToast({
                        title: i18n.t('index.serverWrong'),
                        // title: this.i18n.serverWrong,
                        icon: 'none',
                    });
                }, 1);
            } else if (res.statusCode == 401) {
                if (params.errCallBack) {
                    params.errCallBack(res);
                }
                // 添加到请求队列
                // globalData.requestQueue.push(params);
                // 是否正在登陆
                // if (!globalData.isLanding) {
                //   globalData.isLanding = true; //重新获取token,再次请求接口
                // 	 mpLogin();
                // }

                uni.removeStorageSync('loginResult');
                uni.removeStorageSync('token');
                // #ifdef H5
                const ua = navigator.userAgent.toLowerCase();
                if (ua.search(/MicroMessenger/i) > -1) {
                    uni.setStorageSync('appType', AppType.MP);
                }
                // #endif
                // 尝试静默授权
                // #ifdef MP-WEIXIN

                let canAutoLogin = uni.getStorageSync('hadBindUser') && uni.getStorageSync('hadLogin');
                if (canAutoLogin) {
                    let lastAutoLoginTime = uni.getStorageSync('lastAutoLoginTime');
                    if ((new Date().getTime() - lastAutoLoginTime) / 1000 / 60 < 1) {
                        console.log('自动登录过于频繁,hold...')
                        canAutoLogin = false;
                    }
                }

                if (canAutoLogin) {
                    console.log('global: ', globalData.isLanding);
                    // 是否正在登陆
                    if (!globalData.isLanding) {
                        globalData.isLanding = true; //重新获取token,再次请求接口
                        console.log('401 autologin.....', params.url)
                        wx.login({
                            success: (res) => {
                                uni.setStorageSync('lastAutoLoginTime', new Date().getTime());
                                // 发送 res.code 到后台换取 openId, sessionKey, unionId
                                appLogin(res.code, 1, params, true, queuePassby);
                            },
                            complete: () => {
                                globalData.isLanding = false;
                            }
                        });
                    } else if (!queuePassby) {
                        console.log('不调用自动登录,缓存请求: ' + params.url)
                        globalData.requestQueue.push(params);
                    }
                } else {
                    _401callback(params);
                }

                uni.hideLoading();
                // #endif

                // #ifdef H5 | APP-PLUS
                uni.hideLoading();
                _401callback(params);
                // #endif

            } else if (res.statusCode == 400 && !params.errCallBack) {
                uni.hideLoading();
                setTimeout(() => {
                    console.log(res.data);
                    uni.showToast({
                        title: typeof(res.data) == 'string' ? res.data : '网络繁忙: 400',
                        icon: 'none',
                    });
                }, 1);
            } else {
                // 如果有定义了params.errCallBack,则调用 params.errCallBack(res.data)
                if (params.errCallBack) {
                    params.errCallBack(res);
                }
                uni.hideLoading();
            }
        },
        fail(err) {
            uni.hideLoading();
            setTimeout(() => {
                uni.showToast({
                    // zheli
                    title: i18n.t('index.serverWrong'),
                    icon: 'none',
                });
            }, 1);
        },
    });
}
exports.request = request;

上传文件统一接口工具类

/**
 * 上传文件统一接口
 */
function upload(params) {
    wx.uploadFile({
        url: config.domain + params.url,
        filePath: params.filePath,
        name: params.name,
        header: {
            Authorization: params.login ? undefined : wx.getStorageSync('token'),
        },
        dataType: 'json',
        responseType: params.responseType == undefined ? 'json' : params.responseType,
        success(res) {
            if (res.statusCode == 200) {
                // 如果有定义了params.callBack,则调用 params.callBack(res.data)
                if (params.callBack) {
                    params.callBack(res.data);
                }
            } else {
                uni.showToast({
                    title: i18n.t('index.serverWrong'),
                    icon: 'none',
                });
            }
        },
        fail(err) {
            uni.hideLoading();
        },
    });
}

exports.upload = upload;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值