(一)接口错误拦截

使用场景

  • 统一报错
  • 未登录拦截
  • 请求值、返回值统一处理

使用axios插件进行拦截:

  • 安装axios

    npm i axios --save-dev

  • 在main.js文件中加入:

import axios from 'axios'
import VueAxios from 'vue-axios'axios.defaults.baseURL = '/api';
axios.defaults.timeout = 8000;
//接口错误拦截
//其中:第一个参数是拦截业务(接口错误)异常(前提是http状态码是200)的函数,第二个参数拦截http状态码异常的函数。
axios.interceptors.response.use((response) => {let res = response.data;//这个response不是接口返回,而是axios封装给我们的。response.data才是接口返回值。let path = location.hash;if (res.status == 0) {return res.data;} else if (res.status == 10) {if (path != '#/index') {window.location.href = '/#/login';} return Promise.reject(res);} else {Message.warning(res.msg);return Promise.reject(res);}
}, (error) => {let res = error.response;Message.warning(res.data.message);return Promise.reject(error)
});
Vue.use(VueAxios, axios);

(二)接口环境设置

场景:

  • 开发上线的不同阶段,需要不同的配置
  • 不同跨域方式,配置不同
  • 打包的时候统一注入环境参数

1. 跨域方式为JSONP CORS 时:

把环境变量抽取出来,封装在一个模块中,便于管理与维护。

  • 在package.json,修改:
  "scripts": {"serve": "vue-cli-service serve --mode=development","build": "vue-cli-service build --mode=test","lint": "vue-cli-service lint --mode=production"},
  • 在src下新建一个env.js:
let baseURL;
switch (process.env.NODE_ENV) {case 'development':baseURL = 'http://dev-mall-pre.springboot.cn/api';break;case 'test':baseURL = 'http://test-mall-pre.springboot.cn/api';break;case 'production':baseURL = 'http://prod-mall-pre.springboot.cn/api';break;default:baseURL = 'http://mall-pre.springboot.cn/api';break;
}export default {baseURL
}
  • 在 mian.js 中,加入:
import env from './env'
axios.default.baseURL = env.baseURL;

如何想再添加一个自定义的环境变量 myProd:

  • 在src下新建一个env.myProd:
NODE_ENV = "myProd"
  • 在 package.json 中,添加:
  "scripts": {"serve": "vue-cli-service serve --mode=development","build": "vue-cli-service build --mode=test","lint": "vue-cli-service lint --mode=production","myProd": "vue-cli-service lint --mode=myProd"},
  • 在 env.js 中,添加:
let baseURL;
switch (process.env.NODE_ENV) {case 'development':baseURL = 'http://dev-mall-pre.springboot.cn/api';break;case 'test':baseURL = 'http://test-mall-pre.springboot.cn/api';break;case 'production':baseURL = 'http://prod-mall-pre.springboot.cn/api';break;case 'myProd':baseURL = 'http://prod-mall-pre.springboot.cn/api';break;       default:baseURL = 'http://mall-pre.springboot.cn/api';break;
}export default {baseURL
}

2. 跨域方式为代理时:

  • 在vue.config.js文件中修改target值:
module.exports = {devServer: {host: 'localhost',port: 8080,proxy: {'/api': {target: 'https://www/imooc.com',changeOrigin: true,pathRewrite: {'./api':''}}}}
}
  • 而main.js文件中,仍然是:
axios.defaults.baseURL = '/api';

Vue项目实战:接口错误拦截与环境设置相关推荐

  1. 从零开始Vue项目实战(二)-搭建环境

    1.下载node.js并安装 下载地址:https://nodejs.org/en/download/. 下载.msi 格式的直接连续下一步就可以了.安装完成后可以用 node -v 和 npm -v ...

  2. 【VUE项目实战】17、通过接口获取菜单并渲染

    接上篇<16.主页Header和左侧菜单栏布局> 上一篇我们编写了头部Header和左侧菜单栏的布局样式,本篇我们来通过接口获取菜单数据,并重新加载菜单至左侧菜单栏. 一.获取菜单数据的权 ...

  3. Vue项目实战-vue2(移动端)

    Vue项目实战(移动端)# 相关资料 (一) 创建项目 (二) 禁用Eslint (三) devtool (四) 添加less支持 (五) vue路由配置(背诵) (六) 父子组件通信(背诵) (七) ...

  4. 1.vue项目实战笔记(已完结)

    vue项目实战笔记 目标 目录 1.项目概述 1.1电商项目基本业务概述 1.2电商后台管理系统的功能 1.3电商后台管理系统的开发模式(前后端分离) 1.4电商后台管理系统的技术选型 1.前端项目技 ...

  5. Vue项目实战 —— 哔哩哔哩移动端开发—— 第二篇

    前期回顾     30秒学会 -- <获取验证码基本操作>_0.活在风浪里的博客-CSDN博客前期回顾 懒人必备 -- 时间神器 moment_0.活在风浪里的博客-CSDN博客亲测好用, ...

  6. 【VUE项目实战】56、商品添加功能(六)-提交添加的商品

    接上篇<55.商品添加功能(五)-商品内容模块> 上一篇我们完成了商品内容编辑模块的开发,也即是完成了商品所有的信息编辑,本篇我们就来开发提交商品所有信息到后台的功能. 一.要实现的效果 ...

  7. 【VUE项目实战】54、商品添加功能(四)-商品图片上传模块

    接上篇<53.商品添加功能(三)-商品参数及属性模块> 上一篇我们完成了商品参数和商品属性面板的开发,本篇我们来完成商品图片上传模块的开发. 一.要实现的效果 我们在商品图片页签,需要放置 ...

  8. vue 动态添加class_前端开发:Vue项目实战-Music

    大家好,我来了,本期为大家带来的前端开发知识是"前端开发:Vue项目实战-Music",有兴趣做前端的朋友,和我一起来看看吧! 主要内容 项目环境搭建 路由导航实现 ListVie ...

  9. vue 将字符串最后一个字符给替换_前端开发:Vue项目实战-Music

    大家好,我来了,本期为大家带来的前端开发知识是"前端开发:Vue项目实战-Music",有兴趣做前端的朋友,和我一起来看看吧! 主要内容 项目环境搭建 路由导航实现 ListVie ...

最新文章

  1. Chart.js-线形图分析(参数分析+例图)
  2. JSP学习笔记(四十九):抛弃POI,使用iText生成Word文档
  3. python手机版下载官方-Python
  4. 关于维金病毒和几个维金病毒防治的辅助工具
  5. LeetCode 508. Most Frequent Subtree Sum
  6. 【编程3】二叉树遍历(LeetCode.102)
  7. DCFNET: DISCRIMINANT CORRELATION FILTERS NETWORK FOR VISUAL TRACKING
  8. pmp思维导图 第六版_《每天一小时,两月过PMP》备考指南(附计划表)
  9. 第一百三十三期:MySQL锁会不会,你就差看一看咯
  10. golang select default continue_Golang+VSCode环境配置
  11. java实现扫雷小游戏【完整版】
  12. 从一个面试官的角度谈谈产品经理怎么写简历
  13. 汽车距离报警系统c语言编程,基于单片机的汽车防盗报警系统设计与实现.doc
  14. 谷歌排名影响因素最新研究(SEM RUSH版)
  15. 如何构建可持续的ChatGPT高性能服务器端架构?
  16. 【代码】第11章 APP的爬取,appium打开微信朋友圈
  17. EndNote文献管理(二)基操勿六
  18. Virtualbox centos虚拟机网络互联总结
  19. 真爱和迷恋的五大区别
  20. java上传文件限速_java HttpClient 上传限速(避免宽带占用过高)

热门文章

  1. vivo新系统鸿蒙,截胡华为鸿蒙系统!vivo霸气官宣新系统将登场:天生极致流畅...
  2. zzuli OJ 1127: 矩阵乘积
  3. Pycharm项目中更改python版本以及opencv版本
  4. DSP芯片CSL的使用
  5. Kali Linux 基于FreeFloat FTP Server编写漏洞渗透模块(下)
  6. Leetcode883 三维形体投影面积 高效解法
  7. RocketMQ 容错策略 解析——图解、源码级解析
  8. Headlike设计模式幕布笔记
  9. 三星Note 7停产,原来是吃了流程的亏
  10. hdmi接口线_买了新电视画质还是不清晰?可能是你买错了HDMI线!7点教你避坑