vue-pro/yudao-ui-app-v1/common/js/request.js

60 lines
1.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import store from '@/store'
import { msg, getAuthToken } from './util'
const BASE_URL = 'http://127.0.0.1:28080/api/';
export const request = (options) => {
return new Promise((resolve, reject) => {
// 发起请求
const authToken = getAuthToken();
uni.request({
url: BASE_URL + options.url,
method: options.method || 'GET',
data: options.data || {},
header: {
...options.header,
'Authorization': authToken ? `Bearer ${authToken}` : ''
}
}).then(res => {
res = res[1];
const statusCode = res.statusCode;
if (statusCode !== 200) {
msg('请求失败,请重试');
return;
}
const code = res.data.code;
const message = res.data.msg;
// Token 过期,引导重新登陆
if (code === 401) {
msg('登录信息已过期,请重新登录');
store.commit('logout');
// reject('无效的登录信息');
return;
}
// 系统异常
if (code === 500) {
msg('系统异常,请稍后重试');
reject(new Error(message));
return;
}
// 其它失败情况
if (code > 0) {
msg(message);
// 提供 code + msg可以基于 code 做进一步的处理。当然,一般情况下是不需要的。
// 不需要的场景:手机登录时,密码不正确;
// 需要的场景:微信登录时,未绑定手机,后端会返回一个 code 码,前端需要基于它跳转到绑定手机界面;
reject({
'code': code,
'msg': message
});
return;
}
// 处理成功,则只返回成功的 data 数据,不返回 code 和 msg
resolve(res.data.data);
}).catch((err) => {
reject(err);
})
})
}