2025-03-JS-SDK-PDA/common/MyRequest.js
2025-03-11 09:45:29 +08:00

83 lines
2.8 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'; // 引入 Vuex store
import { navigateToLogin } from '@/utils/navigationUtils'; // 引入导航工具函数
const baseurl = store.state.backendUrl;
/**
* 封装的请求函数
* @param {string} url - 请求的URL路径
* @param {Object} data - 请求的数据
* @param {string} method - 请求的方法,默认为 'POST'
* @returns {Promise} - 返回一个Promise对象
*/
export default function MyRequest(url = '', data = {}, method = 'POST') {
const myurl = baseurl + url; // 拼接完整的请求URL
console.log(myurl);
console.log(data);
// 从Vuex store获取token和session
const token = store.state.token;
const session = store.state.session;
return new Promise((resolve, reject) => {
uni.request({
url: myurl, // 请求的完整URL
method: method, // 请求方法,默认为 'POST'
header: {
'Content-Type': 'application/json;charset=utf-8',
'Authorization': `Bearer ${token}`, // 添加token到请求头
'Session': session // 添加session到请求头
}, // 请求头,指定数据格式为 JSON
data: data, // 请求数据
success: (res) => {
console.log(res);
if (res.statusCode === 200) {
// 检查响应数据中的错误信息
if (res.data && res.data.statusCode === 401) {
// console.error("请求被拒绝token失效");
// navigateToLogin(); // 跳转到登录页面
// reject(res.data);
resolve(res.data); // 返回响应数据
} else {
resolve(res.data); // 返回响应数据
}
} else {
handleRequestError(res); // 处理其他状态码错误
reject(res);
}
},
fail: (err) => {
console.log(err);
handleRequestError(err); // 处理请求错误
reject(err);
}
});
});
}
/**
* 处理请求错误
* @param {Object} err - 错误对象
*/
function handleRequestError(err) {
console.log("状态码: " + err.statusCode);
const statusCode = err.statusCode;
switch (statusCode) {
case 401:
console.error("请求被拒绝token失效");
navigateToLogin(); // 跳转到登录页面
break;
case 404:
console.error("没有找到页面");
break;
case 405:
console.error("错误的请求方法");
break;
case 415:
console.error("不支持的媒体类型");
break;
default:
console.error(`请求失败,状态码: ${statusCode}`, err);
}
}