状态码判断以及自动添加到日志

Former-commit-id: 1befd09802269c61539a27ef2fd4ac86fd6c9b6f [formerly 1befd09802269c61539a27ef2fd4ac86fd6c9b6f [formerly 1befd09802269c61539a27ef2fd4ac86fd6c9b6f [formerly 1befd09802269c61539a27ef2fd4ac86fd6c9b6f [formerly a213ae2d21d86093399baa832146d6c72e7bbe04 [formerly 092ca0610f12674937184af3e325dd1942ea8da5]]]]]
Former-commit-id: be65bfb06d778ba61a1730ec9bf99f4d08c5a815
Former-commit-id: de8047c7fa1b0a4f73b0f8287af0154b895b643a
Former-commit-id: 9b61b9e04a5c6f5f61e248d299799520dcdfba95 [formerly 5e7b6390d23f20f0648b14ed934762068aed9623]
Former-commit-id: 05679a88d3b99e10d9abacb81c500c1ffe7210d5
Former-commit-id: 9c7d82216e4ed70c3621b17c64dbbc239ece84d7
Former-commit-id: 1c8984d4a3b819b4a23eaab0d80df2b8480f8c7a
Former-commit-id: 32635935c307b8af906ad12bd5f18006fc67ce78
Former-commit-id: 37ee780a2e409cfcd8d247b9f44ed80d66dc68db
This commit is contained in:
liyang
2018-08-27 10:47:01 +08:00
parent b6448966e6
commit e1257a084f
2 changed files with 66 additions and 10 deletions

View File

@@ -25,6 +25,7 @@
<script>
import { PluginMocksAjax } from '@/api/demo/plugins/mocks/ajax'
export default {
name: 'demo-plugins-mock-ajax',
data () {
return {
table: {
@@ -46,6 +47,9 @@ export default {
}))
this.table.data = res.list
})
.catch(() => {
// 错误情况
})
}
}
}

View File

@@ -1,7 +1,36 @@
import store from '@/store'
import axios from 'axios'
import { Message } from 'element-ui'
import util from '@/libs/util'
// 创建一个错误
function errorCreat (msg) {
const err = new Error(msg)
errorLog(err)
throw err
}
// 记录和显示错误
function errorLog (err) {
// 添加到日志
store.dispatch('d2admin/log/add', {
type: 'error',
err,
info: '数据请求异常'
})
// 打印到控制台
if (process.env.NODE_ENV === 'development') {
util.log.danger('>>>>>> Error >>>>>>')
console.log(err)
}
// 显示提示
Message({
message: err.message,
type: 'error',
duration: 5 * 1000
})
}
// 创建一个 axios 实例
const service = axios.create({
baseURL: process.env.VUE_APP_API,
@@ -37,21 +66,44 @@ service.interceptors.response.use(
const { code } = dataAxios
// 根据 code 进行判断
if (code === undefined) {
// 如果没有 code 代表这不是后端返回的数据(例如请求 D2Admin 最新版本
// 如果没有 code 代表这不是项目后端开发的接口 比如可能是 D2Admin 请求最新版本
return dataAxios
} else {
// 有 code 代表这是一个后端接口
return dataAxios.data
// 有 code 代表这是一个后端接口 可以进行进一步的判断
switch (code) {
case 0:
// [ 示例 ] code === 0 代表没有错误
return dataAxios.data
case 'xxx':
// [ 示例 ] 其它和后台约定的 code
util.log.error('code xxx')
errorCreat(`${dataAxios.msg}: ${response.config.url}`)
break
default:
// 不是正确的 code
errorCreat(`${dataAxios.msg}: ${response.config.url}`)
break
}
}
},
error => {
util.log.danger('>>>>>> Error >>>>>>')
console.log(error)
Message({
message: error.message,
type: 'error',
duration: 5 * 1000
})
if (error && error.response) {
switch (error.response.status) {
case 400: error.message = '请求错误'; break
case 401: error.message = '未授权,请登录'; break
case 403: error.message = '拒绝访问'; break
case 404: error.message = `请求地址出错: ${error.response.config.url}`; break
case 408: error.message = '请求超时'; break
case 500: error.message = '服务器内部错误'; break
case 501: error.message = '服务未实现'; break
case 502: error.message = '网关错误'; break
case 503: error.message = '服务不可用'; break
case 504: error.message = '网关超时'; break
case 505: error.message = 'HTTP版本不受支持'; break
default: break
}
}
errorLog(error)
return Promise.reject(error)
}
)