VUE脚手架axios中 跨域 实例 并发 全局 拦截

VUE脚手架axios官方网址:

https://www.kancloud.cn/yunye/axios/234845

需要在文档安装 npm install axios 才能使用 axios

1.并发请求:

<template>

  <div id="app">


  </div>

</template>

<script>

import axios from 'axios'

export default {

  name: 'App',

  data(){

  return{

    url1:'https://cno..................',

    url2:'https://cno.........................'

  }

  },

  /* 执行多个并发请求 */

  created(){

    Promise.all([axios.get(this.url1),  axios.get(this.url2)])

    .then(res=>{

         console.log(res);

    })

    /* 和上面Promise 方法类似 但是Promise只返回一个数组 */

   axios.all(  [axios.get(this.url1),  axios.get(this.url2)] )

   .then( axios.spread( (res1,res2)=>{

     /* 两个请求都请求完毕了,再返回结果 */

       console.log(res1);

       console.log(res2);

   }))

  }

}

</script>

<style>

#app {

  font-family: Avenir, Helvetica, Arial, sans-serif;

  -webkit-font-smoothing: antialiased;

  -moz-osx-font-smoothing: grayscale;

  text-align: center;

  color: #2c3e50;

  margin-top: 60px;

}

</style>

2.跨域 实例 全局 拦截:

跨域:建立一个简单的js文档:

let http = require('http')

http.createServer((req,res)=>{

    /* 这句话是允许跨域用的 */

    // res.setHeader('Access-Control-Allow-Origin','*')

    /* 下面是后端返回的结果 */

    res.end('yousuccess')

    /* 3000是端口 */

}).listen(3000,function(){

    console.log('server start...')

})

在vue.config.js文件中配置一下:

const { defineConfig } = require('@vue/cli-service')

module.exports = defineConfig({

  transpileDependencies: true,

  devServer: {

    proxy: {

      '/api': {

        target: 'http://localhost:3000/'

      }

    }

  }

})

主文件App.vue:

<template>

  <div id="app">

   <button @click="login">登 录</button>

   <button @click="getUser">获取用户</button>

   <button @click="getList">所有权限列表</button>

   <child-a></child-a>

  </div>

</template>

<script>

import axios from 'axios'

import ChildA from '@/components/ChildA.vue'

export default {

  name: 'App',

  components:{

   ChildA

  },

  data(){

  return{

    instance:null

  }

  },

  created(){

    /* axios.get('/api')

    .then(res=>{

     console.log(res);

    }) */


    //* 自定义配置新建一个 axios 实例 */

    //* 设置了baseURL 使用了这个instance实例都不用把url写全,直接写路径(例如:login)即可 */

    /* this.instance = axios.create({

      baseURL:'http://time.......................',

      //如果请求花费了超过'timeout'时间,请求将被中断

      timeout:3000,

      //给使用instance这个实例的都配置上Headers

      headers:{

           'Authorization':localStorage.token

         }

    }) */

    /* axios 全局配置基本路径和请求头 */

    axios.defaults.baseURL = 'http://tim................................',

    axios.defaults.headers.common['Authorization'] = localStorage.token,

    axios.defaults.timeout=3000;


    //如果想局部配置 请创建一个实例instance通过实例调接口

    //全局配置 添加请求拦截器

    //每次发送接口都会进行拦截

    axios.interceptors.request.use(function (config) {

      //console.log('config',config);

      //在请求拦截时候 添加请求头也是可以的

      config.headers.Authorization = localStorage.token

      //必须把config return  出去

      return config

    },function(error) {

      //对请求错误做些什么

      return Promise.reject(error)

    });

    //添加响应拦截器

    //只要请求有相应 都会先走一遍响应拦截器

    axios.interceptors.response.use(function (response) {

      //对响应数据做点什么

      console.log('response',response);

      //可以同意给返回数据 再添加属性和值

      response.data.msg = 'VUE好好学'

      //response 也是必须要return出去的

      //可以在响应拦截里面直接把数据data返回出去

      return response.data

    },function(error) {

         //对请求错误做些什么

      return Promise.reject(error)

    })

  },

  mounted(){

   /* 获取元素dom使用,mounted里面dom加载完毕 */

  },

  methods:{

    login(){

      /* this.instance */axios.post('login',{

        username:'admin',

        password:'123456'

      })

      .then(res=>{

        console.log(res.data);

        localStorage.token = res.data.token

      })

    },

    getUser(){

     axios.get('users',{

        params:{

          pagenum:1,

          pagesize:5

        },

        /* 在get配置请求中这样配置 */

        /*  headers:{

           'Authorization':localStorage.token

         } */

      })

      .then(res=>{

       console.log(res);

      })

    },

    getList(){

      axios.get('right/list')

      .then(res=>{

        console.log(res);

      })

    }

  }


}

</script>

<style>

#app {

  font-family: Avenir, Helvetica, Arial, sans-serif;

  -webkit-font-smoothing: antialiased;

  -moz-osx-font-smoothing: grayscale;

  text-align: center;

  color: #2c3e50;

  margin-top: 60px;

}

</style>

也可以在main.js文件中设置全局axios:

import Vue from 'vue'

import App from './App.vue'

import axios from 'axios'

Vue.config.productionTip = false

/* 在入口main.js文件导入axios

   并挂载到Vue构造函数的原型下 目的在供所有Vue组件使用

    这样写就不用每个vue页面都导入axios */

    Vue.prototype.$axios = axios;

new Vue({

  render: h => h(App),

}).$mount('#app')



©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容