Merge pull request #49 from WeBankFinTech/request-code

fix: 非 0 code 作为异常响应处理
This commit is contained in:
harrywan 2021-04-12 21:28:42 +08:00 committed by GitHub
commit d41ae85698
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 50 additions and 19 deletions

View File

@ -59,11 +59,14 @@ export const request = {
// 内部以 reponse.data.code === '0' 判断请求是否成功 // 内部以 reponse.data.code === '0' 判断请求是否成功
// 若使用其他字段判断,可以使用 responseDataAdaptor 对响应数据进行格式 // 若使用其他字段判断,可以使用 responseDataAdaptor 对响应数据进行格式
errorHandler: { errorHandler: {
11199: (response) => { 11199(response) {
// 特殊 code 处理逻辑
},
404(error) {
}, },
404: (error) => { default(error) {
// 异常统一处理
} }
}, },
// 其他 axios 配置 // 其他 axios 配置

View File

@ -31,6 +31,6 @@ export default {
}) })
], ],
devServer: { devServer: {
port: 8080 port: 8000
} }
}; };

View File

@ -26,7 +26,7 @@ export default {
legacy: true legacy: true
}, },
devServer: { devServer: {
port: 8080 port: 8000
}, },
enums: { enums: {
status: [['0', '无效的'], ['1', '有效的']] status: [['0', '无效的'], ['1', '有效的']]

View File

@ -1,18 +1,40 @@
import { isObject } from './helpers'; import { isObject } from './helpers';
export default async ({ function handleAbnormalCode(errorHandler = {}, code, response) {
error, if (errorHandler[code]) {
errorHandler = {}, errorHandler[code](response.data);
response } else if (errorHandler.default) {
}, next) => { // 处理其他异常
if (response && isObject(response.data) && response.data.code && response.data.code !== '0') { errorHandler.default({
errorHandler[response.data.code] && errorHandler[response.data.code](response); 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 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(); await next();

View File

@ -33,6 +33,6 @@ export default {
}) })
], ],
devServer: { devServer: {
port: 8080 port: 8000
} }
}; };

View File

@ -1,7 +1,13 @@
export const request = { export const request = {
errorConfig: { errorHandler: {
111(responseData) {
console.log(responseData);
},
404() { 404() {
console.log('to 404 page'); console.log('to 404 page');
},
default(error) {
console.log(error.response.data);
} }
} }
}; };