响应结果封装
响应状态码
响应状态码借鉴http status code 统一管理,非特殊情况不需要针对所有错误或异常指定特定状态码。如前端需要针对不同错误码做不同页面跳转时需单独申请错误码。 响应状态码枚举如下
code | 释义 | 说明 |
---|---|---|
200 | 处理成功 | |
401 | 用户认证失败 | 登录用户名、密码错误 用户伪造token 用户没有权限 |
404 | 接口地址错误 | |
405 | 请求方法错误 | HTTP Method不正确,如使用HTTP GET访问HTTP POST方法 |
422 | 参数错误 | 缺少必填参数、参数属性不正确 |
429 | 限流 | 系统限流、重复请求 |
500 | 处理失败 | 业务处理失败,msg应返回错误信息; |
前端统一错误处理
以axios为例,接收response后
service.interceptors.response.use(res => {
// 未设置状态码则默认成功状态
const code = res.data.code || 200;
// 获取错误信息
const msg = errorCode[code] || res.data.msg || errorCode['default']
if (code === 401) {
// 未授权或鉴权失败,跳转到登录页面
}
else if (code === 500) {
// 服务器处理失败,弹框提示
ElMessage({
message: msg,
type: 'error'
})
return Promise.reject(new Error(msg))
}
else {
// 200 服务器处理成功, 后续代码继续各自逻辑
return Promise.resolve(res.data)
}
},
error => {
}
)