refactor: 统一接口响应格式处理
- 修改 axios 响应拦截器,统一处理包装后的响应格式: - code === 0: 返回 data 中的实际数据 - code === -1: ElMessage.error 提示 message 并 reject - 其他情况: 兼容原始响应格式 - 更新各页面数据取值方式: - 分页列表: data.data → data.list - SystemUser.vue, SystemRole.vue, Article.vue - Music.vue, Hitokoto.vue, PhotoWall.vue, SourceImage.vue - SystemConfigAdd.vue: data.data.exists → data.exists - Home.vue: 简化 verifyToken 响应处理 - SystemConfig.vue: 简化 save 响应处理 - SystemRole.vue/SystemUser.vue: 简化 delete 响应处理 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
+21
-8
@@ -23,16 +23,29 @@ http.interceptors.request.use(config => {
|
||||
})
|
||||
|
||||
http.interceptors.response.use(res => {
|
||||
return res.data
|
||||
const responseBody = res.data
|
||||
// 统一响应格式处理
|
||||
switch (responseBody.code) {
|
||||
case 0:
|
||||
// 成功,直接返回数据
|
||||
return responseBody.data
|
||||
case -1:
|
||||
// 失败,显示错误信息
|
||||
ElMessage.error(responseBody.message || '请求失败')
|
||||
return Promise.reject(new Error(responseBody.message || '请求失败'))
|
||||
default:
|
||||
// 其他情况,兼容没有包装格式的响应
|
||||
return res.data
|
||||
}
|
||||
}, err => {
|
||||
if (err.response.status >= 500) {
|
||||
if (err.response?.status >= 500) {
|
||||
ElMessage.error('服务器内部错误')
|
||||
} else if (err.response.status >= 400) {
|
||||
if (typeof err.response.data.message === 'string') {
|
||||
ElMessage.warning(err.response.data.message)
|
||||
} else if (Array.isArray(err.response.data.message)) {
|
||||
let message = err.response.data.message.join('<br/>')
|
||||
ElMessage.warning(message)
|
||||
} else if (err.response?.status >= 400) {
|
||||
const message = err.response.data?.message
|
||||
if (typeof message === 'string') {
|
||||
ElMessage.error(message)
|
||||
} else if (Array.isArray(message)) {
|
||||
ElMessage.error(message.join('<br/>'))
|
||||
}
|
||||
if (err.response.status === 403) {
|
||||
router.push('/login')
|
||||
|
||||
Reference in New Issue
Block a user