美文网首页vueaxios
axios全局配置及配置代理(vue-cli2,vue-cli3

axios全局配置及配置代理(vue-cli2,vue-cli3

作者: _小小苏_ | 来源:发表于2018-10-12 16:38 被阅读0次

    axios使用说明文档
    vue-cli2中axios 全局配置:
    需要自己新建一个配置文件(如:axios-init.js),我是直接在config目录下新建的。

       //axios-init.js 
       import axios from 'axios';
    
       axios.defaults.baseURL = env === 'development' ? '/api' : window.location.protocol + '//' + window.location.host; // 配置axios请求的地址
       axios.defaults.headers.post['Content-Type'] = 'application/json; charset=utf-8';
       axios.defaults.crossDomain = true;
       axios.defaults.withCredentials = true;  //设置cross跨域 并设置访问权限 允许跨域携带cookie信息
    
       //配置发送请求前的拦截器 可以设置token信息 
       axios.interceptors.request.use(
            config => {
              // 这里配置全局loading
              if (!(/\.json/.test(config.url))) {
                $('#screen').show() // 这个div控制loading动画,项目中有对json的请求,所以这里区分是否是json文件
              }
              return config
           }, error => {
              return Promise.reject(error)
           }
        )
    
        // 配置响应拦截器 
        axios.interceptors.response.use(
          res => {
            $('#screen').hide() // loading结束
            return Promise.resolve(res.data) // 这里直接返回data, 即接口返回的所有数据
          }, error => {
              $('#screen').hide();
              tooltip('', '连接错误!', 'error');
              // 判断是否登录失效,按照实际项目的接口返回状态来判断
              if (error.toString().includes('776')) {
                  window.location.href = window.location.origin + '/#/login'
              }
              return Promise.reject(error);
            }
        )
        export default axios
    

    最后在main.js里面引入

    import VueAxios from 'vue-axios' // 报错的话则npm安装依赖
    import axios from './../config/axios-init'
    
    Vue.use(VueAxios, axios)
    

    页面使用:

    // get
    this.axios.get('/api/url').then((data) => {
       if (data.success) {
         this.initPage(data.obj)
       }
    })
    // post
    var data = { 'name': this.editName, 'id': item.id }
    this.axios.post('/api/edit', data).then((res) => {
        tooltip('', '操作成功!', 'success')
    })
    

    vue-cli3中引入axios:

    • 直接使用命令:vue add axios
      然后便会自动生成axios.js 文件(在plugins目录下),并在main.js中自动引入。在vue-cli2中这两步为手动添加,vue-cli3则自动添加好了
    • 所以只需要配置axios.js内的拦截即可,大体配置内容和上文的axios-init.js差不多
    • 配置代理
      vue-cli2中是在config目录下的index.js 文件中配置;而vue-cli3则是在vue.config.js(手动新增)中配置。
    // vue-cli2 配置举例,config/index.js中
    dev: {
        assetsSubDirectory: 'static',
        assetsPublicPath: '/',
      // 配置代理
        proxyTable: {
          '/api': {
            target: 'http://192.168.1.160:9999',
            changeOrigin: true, // 是否允许跨越, 开发环境中使用
            pathRewrite: {
              '^/api': ''
            }
          }
        }
    // ....
    }
    
    // vue-cli3 配置举例, vue.config.js中
    devServer: {
        proxy: {
          "/api": {
            target: "http://192.168.1.160:9999",
            changeOrigin: true, // 是否允许跨越, 开发环境中使用
            pathRewrite: {
              "^/api": ""
            }
          }
        }
      }
    

    相关文章

      网友评论

        本文标题:axios全局配置及配置代理(vue-cli2,vue-cli3

        本文链接:https://www.haomeiwen.com/subject/zhkyvftx.html