utils/request.ts文件
import { extend } from 'umi-request';
import { notification } from 'antd';
import {stringify} from 'qs'
//导出sessio 和 userid
import {getSession,getUserID} from '@/utils/memory'
//引入错误码
import errorText from './errorText.json'
const {codeMessage ,serverMessage} = errorText;
/**
* 异常处理程序
*/
const errorHandler = (error: { response: Response }): Response => {
const { response } = error;
if (response && response.status) {
const errorText = codeMessage[response.status] || response.statusText;
const { status, url } = response;
notification.error({
message: `请求错误 ${status}: ${url}`,
description: errorText,
});
} else if (!response) {
notification.error({
description: '您的网络发生异常,无法连接服务器',
message: '网络异常',
});
}
return response;
};
/**
* 配置request请求时的默认参数
*/
const request = extend({
errorHandler, // 默认错误处理
timeout:10000,
method:'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8',
}
});
request.interceptors.request.use(async (url:string,options:any={})=>{
const session = getSession();
const userId = getUserID();
const {f} = options.data;
const value = session && userId ? Object.assign({},{f},{session,userId},options.data): Object.assign({},options.data);
options.data =stringify(value);
return {
url,options
}
});
request.interceptors.response.use(async (response, options) => {
let result:any={};
if(response.status!==200){
notification.error({
message:serverMessage[response.status],
top:30
});
return false;
}else{
const data = await response.clone().json();//{code: -1, msg: "Invalid Parameter", data: null}
if(data.code!==0){
notification.error({
message:codeMessage[data.code],
top:30
});
return false;
}else{
result = data.data;
}
}
return result === 0?true:result
})
export default request;
request调用
import request from '@/utils/request';
export async function loginApi({mobile,token}){
return request(baseURL,{
method:'POST',
data:{
f:'Login',
mobile,token
}
})
}