经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 移动开发 » iOS » 查看文章
详解Vue中使用Axios拦截器
来源:jb51  时间:2019/4/22 10:32:46  对本文有异议

需求是拦截前端的网络请求和相应。

废话不多说,直接上干货。

我用的是vue-cli3所以这个config文件是我自己创建的。

先介绍env.js

  1. //根据不同的环境更改不同的baseUrl
  2. let baseUrl = '';
  3. //开发环境下
  4. if (process.env.NODE_ENV == 'development') {
  5. baseUrl = '';
  6. } else if (process.env.NODE_ENV == 'production') {
  7. baseUrl = '生产地址';
  8. }
  9. export {
  10. baseUrl,//导出baseUrl
  11.  

在这里我首先设置了开发环境和生产环境的地址,并向外抛出。

在看一下axios.js

  1. import {
  2. baseUrl, //引入baseUrl
  3. } from "../config/env";
  4. import axios from 'axios';
  5. import qs from 'qs';
  6. //引入vuex的js文件
  7. import vuex from '../src/store/index';
  8. // 创建 axios 实例
  9. let service = axios.create({
  10. baseUrl: baseUrl,//请求前缀
  11. timeout: 20000, // 请求超时时间
  12. crossDomain: true,//设置cross跨域
  13. withCredentials: true//设置cross跨域 并设置访问权限 允许跨域携带cookie信息
  14. })
  15. // 设置 post 默认 Content-Type
  16. service.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';
  17. // 添加请求拦截器
  18. service.interceptors.request.use(
  19. (config) => {
  20. // console.log()
  21. //下面的代码是如何在拦截器中调用vuex管理状态。
  22. //我这里主要是做了一个蒙层的遮盖
  23. // vuex.$store.commit('OPEN_LOADING');
  24. //判断请求方式是否为POST,进行转换格式
  25. config.method === 'post'
  26. ? config.data = qs.stringify({...config.data})
  27. : config.params = {...config.params};
  28. // 请求发送前进行处理
  29. return config
  30. },
  31. (error) => {
  32. // 请求错误处理
  33. return Promise.reject(error)
  34. }
  35. )
  36. // 添加响应拦截器
  37. service.interceptors.response.use(
  38. (response) => {
  39. let { data } = response;
  40. return data
  41. },
  42. (error) => {
  43. let info = {},
  44. { status, statusText, data } = error.response
  45. if (!error.response) {
  46. info = {
  47. code: 5000,
  48. msg: 'Network Error'
  49. }
  50. } else {
  51. // 此处整理错误信息格式
  52. info = {
  53. code: status,
  54. data: data,
  55. msg: statusText
  56. }
  57. }
  58. }
  59. )
  60. /**
  61. * 向外抛出service
  62. */
  63. export default service

最后将这个axios.js文件引入main.js中,并将引入的axios挂载到Vue实例上就ok了。

完美!如有不对的地方还请各位大佬指点,万分感谢。

踩过的坑:

怎么在axios拦截器中使用vuex,首先我们要引入vuex的js文件,然后就可以用了,就这么简单。

以上所述是小编给大家介绍的Vue使用Axios拦截器详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对w3xue网站的支持!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号