You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
2.3 KiB
93 lines
2.3 KiB
![]()
1 week ago
|
// src/utils/request.js
|
||
|
import axios from "axios";
|
||
|
|
||
|
// 创建 axios 实例
|
||
|
const service = axios.create({
|
||
|
baseURL: process.env.VUE_APP_BASE_API, // 从环境变量中读取 API 基础地址
|
||
|
timeout: 60000, // 请求超时时间
|
||
|
headers: {
|
||
|
'Content-Type': 'application/x-www-form-urlencoded'
|
||
|
},
|
||
|
});
|
||
|
|
||
|
// 请求拦截器
|
||
|
service.interceptors.request.use(
|
||
|
(config) => {
|
||
|
// 在发送请求之前做一些处理,例如添加 token
|
||
|
const token = localStorage.getItem("token");
|
||
|
if (token) {
|
||
|
config.headers["Auth"] = `${token}`;
|
||
|
}
|
||
|
return config;
|
||
|
},
|
||
|
(error) => {
|
||
|
// 对请求错误做些什么
|
||
|
return Promise.reject(error);
|
||
|
}
|
||
|
);
|
||
|
|
||
|
// 响应拦截器
|
||
|
service.interceptors.response.use(
|
||
|
(response) => {
|
||
|
// 对响应数据做一些处理
|
||
|
const res = response.data;
|
||
|
if (!res.status) {
|
||
|
// 如果返回的 status 不是 true,则视为错误
|
||
|
// return Promise.reject(new Error(res.info || "请求失败"));
|
||
|
}
|
||
|
return res;
|
||
|
},
|
||
|
(error) => {
|
||
|
// 对响应错误做些什么
|
||
|
if (error.response) {
|
||
|
switch (error.response.status) {
|
||
|
case 401:
|
||
|
// 未授权,跳转到登录页
|
||
|
window.location.href = "/login";
|
||
|
break;
|
||
|
case 404:
|
||
|
// 资源未找到
|
||
|
console.error("资源未找到");
|
||
|
break;
|
||
|
case 500:
|
||
|
// 服务器错误
|
||
|
console.error("服务器错误");
|
||
|
break;
|
||
|
default:
|
||
|
console.error("请求失败", error.message);
|
||
|
}
|
||
|
}
|
||
|
return Promise.reject(error);
|
||
|
}
|
||
|
);
|
||
|
|
||
|
/**
|
||
|
* 封装请求方法
|
||
|
* @param {string} method 请求方法 (GET, POST, PUT, DELETE 等)
|
||
|
* @param {string} url 请求地址
|
||
|
* @param {object} data 请求参数
|
||
|
* @param {object} config 其他 axios 配置
|
||
|
* @returns {Promise} 返回请求结果
|
||
|
*/
|
||
|
const request = (method, url, data = {}, config = {}) => {
|
||
|
const lowerCaseMethod = method.toLowerCase();
|
||
|
if (lowerCaseMethod === "get") {
|
||
|
// GET 请求将参数拼接到 URL 上
|
||
|
return service({
|
||
|
method: "get",
|
||
|
url,
|
||
|
params: data,
|
||
|
...config,
|
||
|
});
|
||
|
} else {
|
||
|
// 其他请求(POST, PUT, DELETE 等)将参数放在请求体中
|
||
|
return service({
|
||
|
method: lowerCaseMethod,
|
||
|
url,
|
||
|
data,
|
||
|
...config,
|
||
|
});
|
||
|
}
|
||
|
};
|
||
|
|
||
|
export default request;
|