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: { //需要传的参数 } })