umi-request 的 errorHandler的錯誤處理是在接口請求的status!=200時的錯誤處理
(所有的接口的status都是200,判斷錯誤時自定義錯誤);自定義的錯誤信息
const defaultOption = {
prefix: baseUrl,
// 接口超時時間
timeout: 45000,
// 請求方法
method: "POST"
}
const codeMessage = {
200: '服務器成功返回請求的數據。',
201: '新建或修改數據成功。',
202: '一個請求已經進入后台排隊(異步任務)。',
204: '刪除數據成功。',
400: '發出的請求有錯誤,服務器沒有進行新建或修改數據的操作。',
401: '用戶沒有權限(令牌、用戶名、密碼錯誤)。',
403: '用戶得到授權,但是訪問是被禁止的。',
404: '發出的請求針對的是不存在的記錄,服務器沒有進行操作。',
405: '請求方法不被允許。',
406: '請求的格式不可得。',
410: '請求的資源被永久刪除,且不會再得到的。',
422: '當創建一個對象時,發生一個驗證錯誤。',
500: '服務器發生錯誤,請檢查服務器。',
502: '網關錯誤。',
503: '服務不可用,服務器暫時過載或維護。',
504: '網關超時。',
};
/**
* 請求攔截器
* @param url 請求參數
* @param options 請求配置
*/
// 相應攔截器
const responseInterceptor = async (response: any) => {
if (response.status !== 200) {
const err = new Error('服務器異常');
throw err;
} else {
let result = await response.clone().json();
console.log(result)
return result
}
}
/** * 異常處理程序 */ const errorHandler = (error: any) => { const { response, data } = error; console.log(response,data ) if (response && response.status) { const errorText = codeMessage[response.status] || response.statusText; message.error(errorText); } if (!response&&!data) { message.error('哇哦,服務器出錯啦,請稍候再試~'); } else if (data) { message.error(data.ret.msg); } }; 需要把data也帶進去,去處理自定義錯誤信息
export const request: RequestConfig = {
...defaultOption,
errorHandler,
// requestInterceptors: [requestInterceptor],
responseInterceptors: [responseInterceptor]
};