uni-app封装request请求

开发记录——仅供参考

新建一个request.js文件

let request = {
    //    开发者服务器接口地址
    url: "http://test.php",
    //    请求的参数
    data: {},
    //    设置请求的 header,header 中不能设置 Referer。
    header: {},
    //    (需大写)有效值:OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
    method: "POST",
    //    json    如果设为json,会尝试对返回的数据做一次 JSON.parse    
    dataType: "json",
    //    text    设置响应的数据类型。合法值:text、arraybuffer    1.7.0
    responseType: "text",
    //    收到开发者服务成功返回的回调函数
    success() {},
    //    接口调用失败的回调函数    
    fail() {},
    //    接口调用结束的回调函数(调用成功、失败都会执行)
    complete() {},
}
//默认导出函数,$option是在调用时传入的参数
export default ($option) => {
    // request.header.Authorization = uni.getStorageSync('auth_token');
    request.header.Authorization = '用户登录返回的token'
    $option.url = request.url + $option.url
    return new Promise((resolve,reject) => {
        request.complete = (response) => {
            if (response.statusCode === 200) {
                if (response.data.status === 200 || response.data.code === 200) {
                    resolve(response.data)
                }else {
                    var jsonData = response.data;
                    //弹出错误代码对应提示
                    error(jsonData.code).then(() => {
                        // reject(response.data)
                        resolve(response.data)//正式环境去掉
                    })
                }
            }
        }
        //Object.assign({},request, $option)合并request和$option
        uni.request(Object.assign({},request, $option))
        console.log('request',request)
        console.log($option,'$option')
        console.log(Object.assign({},request, $option),'object')
    })
}


async function error (code) {
    switch (code){
        case 201:
        uni.showToast({
            title: '基本系统错误,请联系管理员',
            icon: 'error',
            duration: 2000
        })
        Promise.reject();
            break;
        case 4001:
        uni.showModal({
            title: '温馨提示',
            content: '检测到您还未登录,是否前往登录',
            cancelText: '暂不',
            confirmText: '登录',
            success: function (res) {
                if (res.confirm) {
                    uni.navigateTo({
                        url: '/pages_a/login/index'
                    })
                    uni.hideToast();
                } else if (res.cancel) {
                    uni.navigateBack()
                    uni.hideToast();
                }
            }
        });
        Promise.reject();
            break;
        case 4002:
        uni.showModal({
            title: '温馨提示',
            content: '检测到您没有权限访问',
            success: function (res) {
                if (res.confirm) {
                    uni.navigateTo({
                        url: '/pages_a/login/index'
                    })
                    uni.hideToast();
                } else if (res.cancel) {
                    uni.navigateBack()
                    uni.hideToast();
                }
            }
        });
        Promise.reject();
            break;
            //7-27新增状态码
        case 3001:
        uni.showModal({
            title: '温馨提示',
            content: '您还没绑定手机,是否前往绑定?',
            cancelText: '暂不绑定',
            confirmText: '立即绑定',
            success: function (res) {
                if (res.confirm) {
                    uni.navigateTo({
                        url: '/pages_a/login/bind_phone'
                    })
                    uni.hideToast();
                } else if (res.cancel) {
                    uni.navigateBack()
                    uni.hideToast();
                }
            }
        })
        Promise.reject();
            break;
        case 3002:
        uni.showModal({
            title: '温馨提示',
            content: '您还有资料未完善,是否前往完善?',
            cancelText: '暂不完善',
            confirmText: '立即完善',
            success: function (res) {
                if (res.confirm) {
                    uni.navigateTo({
                        url: '/pages_a/login/evpi'
                    })
                    uni.hideToast();
                } else if (res.cancel) {
                    uni.navigateBack()
                    uni.hideToast();
                }
            }
        })
        Promise.reject();
            break;
        case 3003:
        uni.showModal({
            title: '温馨提示',
            content: '您还未完善头像,昵称信息,是否前往完善?',
            cancelText: '暂不完善',
            confirmText: '立即完善',
            success: function (res) {
                if (res.confirm) {
                    uni.navigateTo({
                        url: '/pages_a/login/perfect'
                    })
                    uni.hideToast();
                } else if (res.cancel) {
                    uni.navigateBack()
                    uni.hideToast();
                }
            }
        });
        Promise.reject();
            break;
        case 3004:
        uni.showModal({
            title: '温馨提示',
            content: '是否跳转到修改成绩选科页面',
            cancelText: '暂不跳转',
            confirmText: '立即跳转',
            success: function (res) {
                if (res.confirm) {
                    uni.navigateTo({
                        url: '/pages/mine/personal/mine_data/mine_data'
                    })
                    uni.hideToast();
                } else if (res.cancel) {
                    uni.navigateBack()
                    uni.hideToast();
                }
            }
        });
        Promise.reject();
            break;
        case 5001:
        uni.showToast({
            title: '验签失败!',
            icon: 'error',
            duration: 2000
        })
        Promise.reject()
            break;
        default:
            uni.showToast({
                title: '网络异常,请联系管理员!',
                icon: 'error',
                duration: 2000
            })
            break;
            
    }
}

 

Object.assign
作用:合并对象。

打印request

 

打印option

 

打印object

 

在main.js文件中引入,并挂载到原型上

import request from 'common/request.js'
Vue.prototype.request = request

使用:

this.request({
    url: '请求地址',
    data: {
            //需要传的参数
    }
})

 

posted @ 2021-09-11 17:49  初生土豆  阅读(1177)  评论(0编辑  收藏  举报