diff --git a/docs/zh/reference/plugin/plugins/request.md b/docs/zh/reference/plugin/plugins/request.md index 08c23e32..777ad34e 100644 --- a/docs/zh/reference/plugin/plugins/request.md +++ b/docs/zh/reference/plugin/plugins/request.md @@ -59,11 +59,14 @@ export const request = { // 内部以 reponse.data.code === '0' 判断请求是否成功 // 若使用其他字段判断,可以使用 responseDataAdaptor 对响应数据进行格式 errorHandler: { - 11199: (response) => { + 11199(response) { + // 特殊 code 处理逻辑 + }, + 404(error) { }, - 404: (error) => { - + default(error) { + // 异常统一处理 } }, // 其他 axios 配置 diff --git a/packages/create-fes-app/templates/app/h5/.fes.js b/packages/create-fes-app/templates/app/h5/.fes.js index ad88fd84..72fd6ff2 100644 --- a/packages/create-fes-app/templates/app/h5/.fes.js +++ b/packages/create-fes-app/templates/app/h5/.fes.js @@ -31,6 +31,6 @@ export default { }) ], devServer: { - port: 8080 + port: 8000 } }; diff --git a/packages/create-fes-app/templates/app/pc/.fes.js b/packages/create-fes-app/templates/app/pc/.fes.js index 03ee6f39..a0883b42 100644 --- a/packages/create-fes-app/templates/app/pc/.fes.js +++ b/packages/create-fes-app/templates/app/pc/.fes.js @@ -26,7 +26,7 @@ export default { legacy: true }, devServer: { - port: 8080 + port: 8000 }, enums: { status: [['0', '无效的'], ['1', '有效的']] diff --git a/packages/fes-plugin-request/src/template/resErrorProcess.js b/packages/fes-plugin-request/src/template/resErrorProcess.js index 50961d49..d0f6db42 100644 --- a/packages/fes-plugin-request/src/template/resErrorProcess.js +++ b/packages/fes-plugin-request/src/template/resErrorProcess.js @@ -1,18 +1,40 @@ import { isObject } from './helpers'; -export default async ({ - error, - errorHandler = {}, - response -}, next) => { - if (response && isObject(response.data) && response.data.code && response.data.code !== '0') { - errorHandler[response.data.code] && errorHandler[response.data.code](response); - } else if (error) { - if (error.type) { - errorHandler[error.type] && errorHandler[error.type](error); - } else if (error.response) { - errorHandler[error.response.status] && errorHandler[error.response.status](error); +function handleAbnormalCode(errorHandler = {}, code, response) { + if (errorHandler[code]) { + errorHandler[code](response.data); + } else if (errorHandler.default) { + // 处理其他异常 + errorHandler.default({ + response + }); + } +} + +function handleRequestError(errorHandler = {}, error) { + if (error.type) { + errorHandler[error.type] && errorHandler[error.type](error); + } else if (error.response) { + errorHandler[error.response.status] && errorHandler[error.response.status](error); + } else if (errorHandler.default) { + errorHandler.default(error); + } +} + +export default async (ctx, next) => { + const { + error, + errorHandler = {}, + response + } = ctx; + if (response && isObject(response.data)) { + const code = response.data.code; + if (code !== '0') { + handleAbnormalCode(errorHandler, code, response); + ctx.error = response; // code 不为零进入 reject } + } else if (error) { + handleRequestError(errorHandler, error); } await next(); diff --git a/packages/fes-template-h5/.fes.js b/packages/fes-template-h5/.fes.js index beb486d8..cc9f10b2 100644 --- a/packages/fes-template-h5/.fes.js +++ b/packages/fes-template-h5/.fes.js @@ -33,6 +33,6 @@ export default { }) ], devServer: { - port: 8080 + port: 8000 } }; diff --git a/packages/fes-template-h5/src/app.js b/packages/fes-template-h5/src/app.js index 140e25e5..f5074050 100644 --- a/packages/fes-template-h5/src/app.js +++ b/packages/fes-template-h5/src/app.js @@ -1,7 +1,13 @@ export const request = { - errorConfig: { + errorHandler: { + 111(responseData) { + console.log(responseData); + }, 404() { console.log('to 404 page'); + }, + default(error) { + console.log(error.response.data); } } };