Umi4 中 umi-request 不再内置,需要手动安装依赖。
解决步骤
1. 安装 umi-request
pnpm add umi-request
# npm
npm install umi-request
import { extend } from 'umi-request';
import { message } from 'antd';
import { history } from 'umi';
const request = extend({
prefix: '/react_oa_api',
timeout: 10000,
headers: {
'Content-Type': 'application/json',
},
});
request.interceptors.request.use((url, options) => {
const token = sessionStorage.getItem('token');
if (token) {
options.headers = {
...options.headers,
Authorization: token,
};
}
return {
url,
options,
};
});
request.interceptors.response.use(async (response, options) => {
const data = await response.clone().json();
if (data.code !== 0) {
message.error(data.msg || '请求失败');
history.replace('/users/login');
sessionStorage.clear();
throw new Error(data.msg || '请求失败');
}
const token = response.headers.get('Authorization');
if (token) {
sessionStorage.setItem('token', token);
}
return data;
}, (error) => {
if (error.response) {
message.error(`网络错误 ${error.response.status}`);
} else if (error.request) {
message.error('网络请求失败');
} else {
message.error(`请求配置错误: ${error.message}`);
}
return {
code: -1,
data: false,
msg: error.message || '网络请求失败',
};
});
const Http = {
post(url, params = {}, options = {}) {
return request.post(url, {
data: params,
...options,
});
},
put(url, params = {}, options = {}) {
return request.put(url, {
data: params,
...options,
});
},
get(url, params = {}, options = {}) {
return request.get(url, {
params,
...options,
});
},
delete(url, params = {}, options = {}) {
return request.delete(url, {
params,
...options,
});
},
};
export default Http;




