- axios.interceptors.response.use(function (response) {
- return response;
- }, function (error) {
- error.globalErrorProcess = function () {
- switch (this.response.status) {
- case 401: // 处理基本 401 错误
- break;
- case 404: // 处理基本 404 错误
- break;
- case 403: // 处理基本 403 错误
- break;
- // 处理其他4xx/5xx等基本错误的处理
- }
- return Promise.reject(this);
- };
- if(error.config.hasOwnProperty('catch') && error.config.catch == true) {
- return Promise.reject(error);
- }
- return error.globalErrorProcess()
- });
我们定义一个全局的错误处理器,并把他赋给 error 对象的 globalErrorProcess 方法。接着判断当前请求 config 是否启用 catch,若启用,默认不进行任何错误处理,交由调用方自行负责;否则用全局错误处理。
在使用时,若需要自定义捕获错误,可显示传递一个 config,相应请求方法的 API 如下:
axios.request(config)
axios.get(url[, config])
axios.delete(url[, config])
axios.head(url[, config])
axios.options(url[, config])
axios.post(url[, data[, config]])
axios.put(url[, data[, config]])
axios.patch(url[, data[, config]])
- axios.post('https://api.github.com/xxx', null, {catch: true}).then(function (response) {
- console.log(response);
- }).catch(function (error) {
- let code = error.response.data.error_code
- if (code == 4291011) {
- // 今日投票次数太多,显示关注公众号二维码
- } else if (code == 4031011) {
- // 不允许的投票时间段,
- } else if (code == 4291012) {
- // 作品票数异常,需先通过滑动验证码
- }
- return error.globalErrorProcesser()
- });