axios的基本使用

  • Post author:
  • Post category:其他



一、axios是什么?

axios是基于promise对ajax的封装

ajax MVC

axios MVVM

二、axios的基本使用

1、默认请求方式

//使用默认方式发送无参请求,默认情况下是get请求
    myaxios(){
     this.axios({
      url: 'http://api.tianapi.com/petnews/index',
    }).then((res)=>{
      console.log(res);
    }).catch(err =>{
      console.log(err);
    })
    }
//使用默认方式发送有参请求,默认情况下是get请求
  myaxios(){
     this.axios({
      url: 'http://api.tianapi.com/petnews/index?key=fa5333a78c6388b7ef9104915d37c898&num=10',
    }).then((res)=>{
      console.log(res);
    }).catch(err =>{
      console.log(err);
    })

2、get请求

//使用请求方式为get的无参请求
    myaxios(){
     this.axios({
      method:'get'
      url: 'http://api.tianapi.com/petnews/index',
    }).then((res)=>{
      console.log(res);
    }).catch(err =>{
      console.log(err);
    })
}
//使用请求方式为get的有参请求
    myaxios(){
     this.axios({
      method:'get'
     url: 'http://api.tianapi.com/petnews/index?key=fa5333a78c6388b7ef9104915d37c898&num=10',
    }).then((res)=>{
      console.log(res);
    }).catch(err =>{
      console.log(err);
    })
    }
//使用get的有参请求 使用params
 myaxios(){
     this.axios({
       method:'get',
      url: 'http://api.tianapi.com/petnews/index',
      params:{
        key:'fa5333a78c6388b7ef9104915d37c898',
        num:'10'
      }
    }).then((res)=>{
      console.log(res);
    }).catch(err =>{
      console.log(err);
    })
    }


注:

使用params传参会默认将传递的参数进行拼接,是界面更简洁明了

3、post请求

//使用请求方式为post的无参请求
    myaxios(){
     this.axios({
      method:'post'
      url: 'http://api.tianapi.com/petnews/index?key=fa5333a78c6388b7ef9104915d37c898&num=10',
    }).then((res)=>{
      console.log(res);
    }).catch(err =>{
      console.log(err);
    })
    }
//使用请求方式为post的有参请求
    myaxios(){
     this.axios({
      method:'post'
      url: 'http://api.tianapi.com/petnews/index',
    }).then((res)=>{
      console.log(res);
    }).catch(err =>{
      console.log(err);
    })
    }
//使用请求方式为post的有参请求 使用params
myaxios1(){
      this.axios({
      url:'https://api.seniverse.com/v3/life/suggestion.json',
      method:'POST',
      params:{
          key:'SCYrvkytJze9qyzOh',
          location:'shanghai',
          language:'zh-Hans'
      }
        
      }).then(res =>{
        console.log(res);
      })
    }

三、axios的请求方式

1、axios.get

// 使用axios.get发送无参请求
    my1(){
      this.axios.get(
        'http://api.tianapi.com/petnews/index'
        ).then(
        res =>{
          console.log(res);
        }
      )
    }
 // 使用axios.get发送有参请求
    my1(){
      this.axios.get(
      'http://api.tianapi.com/petnews/index',
      {params:{key:'fa5333a78c6388b7ef9104915d37c898',num:10}}).then(
        res =>{
          console.log(res);
        }
      )
    }

2、axios.post

// 使用axios.post发送无参请求
    my2(){
      this.axios.post('https://api.seniverse.com/v3/life/suggestion.json?key=SCYrvkytJze9qyzOh&location=shanghai&language=zh-Hans').then(
        res =>{
          console.log(res);
        }
      )
    }

四、axios的并发请求

// 使用axios的并发请求
    my2(){
      this.axios.all([
        this.axios.post('https://api.seniverse.com/v3/life/suggestion.json?key=SCYrvkytJze9qyzOh&location=shanghai&language=zh-Hans'),
        this.axios.get('http://api.tianapi.com/petnews/index?key=fa5333a78c6388b7ef9104915d37c898&num=10')
      ]).then(
        res =>{
//请求成功返回一个数组包含两个请求响应的数据
          console.log(res);
        }
      ).catch(err =>{
        console.log(err);
      })
    }


注:使用axios的spread可以将并发请求的参数分别获取

// 使用axios的并发请求
    my2(){
      this.axios.all([
        this.axios.post('https://api.seniverse.com/v3/life/suggestion.json?key=SCYrvkytJze9qyzOh&location=shanghai&language=zh-Hans'),
        this.axios.get('http://api.tianapi.com/petnews/index?key=fa5333a78c6388b7ef9104915d37c898&num=10')
      ]).then(
        // 使用axios的spread可以将并发请求的参数分别获取
          this.axios.spread((res1,res2) =>{
              console.log(res1)
              console.log(res2)
          })
      ).catch(err =>{
        console.log(err);
      })
    }

五、axios的实例

1、创建axios实例

–在requerst.js文件里面创建axios实例

//引入axios
import axios from 'axios'
// 创建axios的实例
const requerst = axios.create({
        baseURL:'/api',
        timeout:5000
})
//对外暴露这个文件
export default requerst;

2、引用axios实例

创建一个文件引入并使用axios实例(方便后期管理)

import requerst from './requerst'
export const getData = () =>{
    return requerst({url:'/cart/cartList',method:'get'})
}

3、调用接口

  mytest3(){
      getData().then(res =>{
        console.log(res);
      })
    }

六、axios的拦截器

拦截器的作用:用于我们发送请求或者响应时对操作进行相应的处理

axios为我们提供了两种拦截器
1、请求拦截器(请求成功、请求失败)
2、响应拦截器(成功的响应、失败的响应)

1、请求拦截器

import axios from 'axios'
import { config } from 'shelljs';
// 创建axios的实例
const requerst = axios.create({
        baseURL:'/api',
        timeout:5000,
})
//请求拦截器
requerst.interceptors.request.use(config =>{
    // 请求拦截器成功的响应
    console.log('这是请求拦截器');
    console.log(config);
    return config
},err =>{
    // 请求拦截器失败的响应
    console.log('失败');
    console.log(err);
})
// 响应拦截器
export default requerst;

2、响应拦截器

import axios from 'axios'
import { config } from 'shelljs';
// 创建axios的实例
const requerst = axios.create({
        baseURL:'/api',
        timeout:5000,
})
//响应拦截器
requerst.interceptors.response.use(config =>{
    // 请求拦截器成功的响应
    console.log('这是响应拦截器');
    console.log(config);
    return config
},err =>{
    // 响应拦截器失败的响应
    console.log('失败');
    console.log(err);
})
// 响应拦截器
export default requerst;



版权声明:本文为weixin_46030955原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。