数据处理 - 多平台接口状态码header请求封装方案
数据处理 - 多平台接口状态码header请求封装方案
统一标准
- 状态码
- header
区分处理
header
一起传入
{
"headers": {
"token": "",
"plant1-token": "",
"plant2-token": ""
}
}
分平台处理
!!!warning key 需为平台api公共部分
const headersObj = {
default: {},
plant1: {},
key:{}
};
//创建axios实例
const service = axios.create({
headers: {
// common headers
'Content-Type': 'application/json;charset=utf-8',
},
});
//request(请求)拦截器
service.interceptors.request.use(
(config) => {
startLoading();
for (let [key, val] of Object.entries(headersObj)) {
if (config.url.includes(key)) { // !!! key 需为平台api公共部分
Object.assign(config.headers, val);
break;
}
}
return config;
},
(error) => {
Message.error({ message: '请求超时!' });
Promise.reject(error)
}
);
状态码
统一判断
注意避免冲突,同一状态码不能在不同平台属于不同状态
const statusCode = {
success: [1, 1000],
error: [0, 1001],
timeout: [2, 1002],
};
// respone响应拦截器
service.interceptors.response.use(
(response) => {
const res = response.data;
if (response.status === 200) {
if (statusCode.success.includes(res.code)) {
return res;
}
if (statusCode.error.includes(res.code)) {
Message({
type: 'error',
duration: 1000,
message: res.result.message ? res.result.message : '接口请求异常',
});
return res;
} else {
return res;
}
}
},
async (err) => {
message.error(err.message);
return Promise.reject(err);
}
);
分平台判断
- 不需要避免冲突
- !!!warning key 需为平台api公共部分
const statusCode = {
default: {
success: 1,
error: 0,
timeout: 2,
},
plant1: {
success: 1000,
error: 1001,
timeout: 0,
},
};
// respone响应拦截器
service.interceptors.response.use(
(response) => {
const res = response.data;
if (response.status === 200) {
let plantstatusCode = Object.entries(statusCode).find(
([key, val]) => response.config.url.includes(key) // !!! key 需为平台api公共部分
)[1];
if (plantstatusCode.success == res.code) {
return res;
}
if (plantstatusCode.error == res.code) {
Message({
type: 'error',
duration: 1000,
message: res.result.message ? res.result.message : '接口请求异常',
});
return res;
} else {
return res;
}
}
},
async (err) => {
message.error(err.message);
return Promise.reject(err);
}
);