xinsi_book/src/utils/request.js

156 lines
3.8 KiB
JavaScript
Raw Normal View History

2024-06-13 00:50:28 +00:00
import axios from "axios";
// import config from '~/config';
import { getStore } from "./mUtils";
import Md5 from "crypto-js/md5";
// axios.defaults.timeout = 12000;
axios.defaults.headers = {
// 'Content-Type': 'application/json',
// 'Accept': 'application/json',
"Content-Type": "multipart/form-data",
};
// 请求拦截器
axios.interceptors.request.use(
(request) => {
// 如果请求是浏览器访问
// if (typeof window !== "undefined") {
// if ($nuxt.$store.getters.userInfo.token && $nuxt.$store.getters.userInfo.token !== "") {
// // 浏览器用户登录 token 不可删除 删除之后 用户ajax 用户登录失效
// request.headers["Authorization"] = "Token " + $nuxt.$store.getters.userInfo.token;
// } else {
// request.headers["Authorization"] = '';
// }
// } else {
// // 如果请求是服务端访问
// // console.log('当前是服务端环境')
// // axios.defaults.baseURL = config.BASE_URL;
// }
return request;
},
(error) => {
return Promise.reject(error);
}
);
export default async (options = { method: "GET" }) => {
let isdata = true;
if (
options.method.toUpperCase() !== "POST" &&
options.method.toUpperCase() !== "PUT" &&
options.method.toUpperCase() !== "PATCH" &&
options.method.toUpperCase() !== "DELETE"
) {
isdata = false;
}
// 发请求前 业务处理
2024-06-18 03:30:25 +00:00
2024-06-13 00:50:28 +00:00
var data = options.data;
// 设置公共报文逻辑
let time = Date.parse(new Date());
let keys = ["apikey", "sign", "time"];
for (const keysKey in data) {
keys.push(keysKey);
}
data.isTest = 1;
2024-06-18 03:30:25 +00:00
//
2024-06-13 00:50:28 +00:00
let key1 = keys.sort();
let key2 = key1.join("&");
let key3 = key2 + "&" + time + "&" + "HuaTeng987!@#";
// console.log(key3)
// console.log(data)
let sign = Md5(key3).toString();
2024-06-18 03:30:25 +00:00
//
2024-06-13 00:50:28 +00:00
let apikey = getStore("apikey");
if (apikey !== null) {
data.apikey = apikey;
} else {
data.apikey = "HT_6d671a62c1d668161552616453";
}
console.log('apikey=='+data.apikey)
2024-06-18 03:30:25 +00:00
// userId
let userId = getStore("userId");
if (userId !== null) {
data.userId = userId;
}
2024-06-13 00:50:28 +00:00
// 参数
data.sign = sign;
data.time = time;
var myheaders = {};
var mydata = data;
// 如果是 post 方法 需要设置 编码格式
if (options.method === "POST") {
myheaders = {
"Content-Type": "multipart/form-data",
};
let formData = new FormData();
for (const datakey in data) {
formData.append(datakey, data[datakey]);
}
mydata = formData;
}
2024-06-18 03:30:25 +00:00
//
2024-06-13 00:50:28 +00:00
try {
2024-06-18 03:30:25 +00:00
2024-06-13 00:50:28 +00:00
console.log(options.url)
const res = await axios({
method: options.method,
url: options.url,
data: mydata,
params: mydata,
headers: myheaders,
});
2024-06-18 07:53:13 +00:00
// code == 200 报错
if(res.data.code !== 200){
return new Promise((resolve,reject)=>reject(res.data.msg));
}
2024-06-18 03:30:25 +00:00
return new Promise((resolve,reject)=>resolve(res.data.data))
2024-06-13 00:50:28 +00:00
} catch (error) {
2024-06-18 03:30:25 +00:00
2024-06-13 00:50:28 +00:00
if (axios.isAxiosError(error)) {
if (error.response) {
// 请求已发出,服务器响应了状态码,但状态码不在 2xx 范围内
// if (error.response.status === 403) {
// console.error('Access forbidden: You do not have permission to access this resource.');
// } else {
// console.error(`Error: Received status code ${error.response.status}`);
// }
console.log(error.response)
} else if (error.request) {
// 请求已发出但没有收到响应
console.error('No response received:', error.request);
} else {
// 设置请求时发生了错误
console.error('Error setting up request:', error.message);
}
} else {
// 处理非 Axios 错误
console.error('An unexpected error occurred:', error.message);
}
}
};