merchant-web/src/utils/httpRequest.js

235 lines
6.2 KiB
JavaScript
Raw Normal View History

2024-08-05 08:26:35 +00:00
/*
* @author: ym
* @Date: 2021-09-28 10:53:53
* @LastEditTime: 2022-09-02 22:56:48
* @LastEditors: chenkangxu
* @Description:
* @FilePath: \background-front-end\src\utils\httpRequest.js
*/
import Vue from "vue";
import axios from "axios";
import router from "@/router";
import qs from "qs";
import merge from "lodash/merge";
import { Message } from "element-ui";
import { clearLoginInfo } from "@/utils";
import commonUtil from "./common";
import des from "./des.js";
const http = axios.create({
baseURL:
process.env.NODE_ENV !== "production" && process.env.OPEN_PROXY
? "/proxyApi/"
: window.SITE_CONFIG.baseUrl,
timeout: 1000 * 30,
withCredentials: true,
headers: {
"Content-Type": "application/json; charset=utf-8"
}
});
/**
* 请求拦截
*/
http.interceptors.request.use(
config => {
config.headers["token"] =`Bearer ${Vue.cookie.get("token")}`; // 请求头带上token
// 针对post请求加密
2024-10-08 07:59:29 +00:00
// if (config.method.toLowerCase() === "post" && process.env.NODE_ENV === "production" ) {
// //如果已经转成字符串了,就不用再转了
// if (typeof config.data === "string") {
// config.data = des.encryptByDES(config.data, "u48rE-RlGbua_K_m$*#z99lt");
// } else {
// //否则要转一次
// config.data = des.encryptByDES(
// JSON.stringify(config.data),
// "u48rE-RlGbua_K_m$*#z99lt"
// );
// }
// }
2024-08-05 08:26:35 +00:00
if (process.env.NODE_ENV !== "production") {
console.log(`【请求】${config.url}`, config);
}
return config;
},
error => {
return Promise.reject(error);
}
);
// /**
// * 响应拦截
// */
// http.interceptors.response.use(response => {
// console.log(`【响应】${response.config.url}`, response);
// if (response.data) {
// switch (response.data.code) {
// case 0:
// commonUtil.showMessage({
// message: response.data.msg,
// type: 'success'
// });
// break;
// case 401:
// commonUtil.showMessage({
// message: response.data.msg,
// type: "error"
// });
// clearLoginInfo()
// router.push({
// name: 'login'
// });
// break;
// case 403:
// commonUtil.showMessage({
// message: response.data.msg,
// type: "error"
// });
// break;
// case 404:
// commonUtil.showMessage({
// message: response.data.msg,
// type: "error"
// });
// break;
// case 408:
// commonUtil.showMessage({
// message: response.data.msg,
// type: "error"
// });
// break;
// case 500:
// commonUtil.showMessage({
// message: response.data.msg,
// type: "error"
// });
// break;
// case 501:
// commonUtil.showMessage({
// message: response.data.msg,
// type: "error"
// });
// break;
// case 502:
// commonUtil.showMessage({
// message: response.data.msg,
// type: "error"
// });
// break;
// case 503:
// commonUtil.showMessage({
// message: response.data.msg,
// type: "error"
// });
// break;
// case 504:
// commonUtil.showMessage({
// message: response.data.msg,
// type: "error"
// });
// break;
// default:
// commonUtil.showMessage({
// message: response.data.msg,
// type: "error"
// });
// }
// }
// return response
// }, error => {
// return Promise.reject(error)
// })
/**
* 响应拦截
*/
http.interceptors.response.use(
response => {
//开发环境下才可以打印日志
if (process.env.NODE_ENV !== "production") {
console.log(`【响应】${response.config.url}`, response);
}
if (response.data && response.data.code == 401) {
// 401, 权限未认证
clearLoginInfo();
router.push({ name: "login" });
return Promise.resolve(response);
} else if (response.data && response.data.code !=200 ) {
Message.closeAll();
Message({
message: response.data.msg||response.data.message,
type: "error"
});
return Promise.reject(response);
} else {
//请求成功的情况
//如果是开发模式下,都要弹出
if (process.env.NODE_ENV !== "production") {
Message.closeAll();
Message({
message: response.data.msg||response.data.message,
type: "success"
});
}
// 生产环境下限制性弹出
else {
if (response.data.msg != "success" && response.data.msg != "查询成功" && Object.prototype.toString.call(response.data) === '[object Object]') {
Message.closeAll();
Message({
message: response.data.msg,
type: "success"
});
}
}
return Promise.resolve(response);
}
},
error => {
return Promise.reject(error);
}
);
/**
* 请求地址处理
* @param {*} actionName action方法名称
*/
http.adornUrl = actionName => {
// 非生产环境 && 开启代理, 接口前缀统一使用[/proxyApi/]前缀做代理拦截!
return (
(process.env.NODE_ENV !== "production" && process.env.OPEN_PROXY
? "/proxyApi/"
: window.SITE_CONFIG.baseUrl) + actionName
);
};
/**
* get请求参数处理
* @param {*} params 参数对象
* @param {*} openDefultParams 是否开启默认参数?
*/
http.adornParams = (params = {}, openDefultParams = true) => {
var defaults = {
t: new Date().getTime()
};
return openDefultParams ? merge(defaults, params) : params;
};
/**
* post请求数据处理
* @param {*} data 数据对象
* @param {*} openDefultdata 是否开启默认数据?
* @param {*} contentType 数据格式
* json: 'application/json; charset=utf-8'
* form: 'application/x-www-form-urlencoded; charset=utf-8'
*/
http.adornData = (data = {}, openDefultdata = true, contentType = "json") => {
var defaults = {
t: new Date().getTime()
};
data = openDefultdata ? merge(defaults, data) : data;
return contentType === "json" ? JSON.stringify(data) : qs.stringify(data);
};
export default http;