日常小记:axios在vue中的使用

1、axios请求方法和别名

这是axios的请求方法

axios({
      method:'get',
      url:'/data.json',
      params:{
        id:12
      }
    })

这是axios的请求方法别名

axios.get('/data.json',{
      params:{
        id:12
      }
    })

可以看出来,别名就是将请求方法config中的method和url两个字段抽取了出来,是请求方法的简写,剩余字段依然定义在config中。

2、复习下几种请求方法

常用的请求方法有get post put patch delete

  • get 获取数据
  • post 提交数据(例如表单提交和文件上传)
  • put 更新数据(推送所有数据到后端)
  • patch 更新数据(只推送修改部分的数据到后端)
  • delete 删除数据
    尽管post put patch 使用方式非常相似并且在使用上也没有严格的约束,但我们应该遵守规范编写代码。
    post方法根据携带数据方式的不同又分为两种:
    1、application/json(常用)
// data是一个数据
    let data = {
      id:12
    }
    axios({
      method:'post',
      url:'/post',
      data:data
    })

2、form-data(较少用到,但在文件上传等场景还会使用)

// form-data请求
    let formData = new FormData()
    for(let key in data) {
      formData.append(key,data[key])
    }
    axios.post('/post', formData).then((res)=>{
      console.log(res)
    })

最后有关别名再提一点,delete和get别名写法只有url和config两个参数,post put和patch方法则有三个参数

3、并发请求

并发请求:同时进行多个请求,并统一处理返回值
使用场景:当同时请求多个接口并且要同时使用多个接口返回值时,使用并发请求

axios.all([
      axios.get('/data.json'),
      axios.get('/city.json')
    ]).then(
      axios.spread((dataRes, cityRes)=>{
        console.log(dataRes)
        console.log(cityRes)
      })
    )

4、axios实例和配置

使用场景:当接口地址有多个,并且超时时长不同时,使用axios实例

let instance = axios.create({
      baseURL:'http://localhost:8080',
      timeout:1000,
      url:'/data.json',
      method:'get',
      headers:{},
      params:{},
      data:{}
    })
    instance.get('/data.json').then((res)=> {
      console.log(res)
    })

在该实例中配置了多个config字段,值得注意的是,params和data都是携带数据,但前者拼接在url尾部,而后者则存放在请求体中

axios三种配置位置,优先级从低到高
1 全局配置
axios.defaults.baseURL
axios.default.timeout
2 实例配置
instance.defaults.timeout
3 请求配置
写在{}中

5、拦截器

从字面可以看出拦截器的作用,常用的有请求和响应拦截,还有一种是取消拦截,但较少使用

axios.interceptors.request.use(
      config=>{
        // 发送请求前做些什么
        return config
      },
      err=>{
        // 请求错误时做些什么(成功时用Promise.resolve)
        return Promise.reject(err)
      }
    )
    // 响应拦截器
    axios.interceptors.response.use(
      res=>{
        // 请求成功后返回的数据res
        return res
      },
      err=>{
        // 响应错误后做什么
        return Promise.reject(err)
      }
    )

6、取消请求

一些特定场景,比如在后台管理中,要请求大量数据,请求时间比较长,这时候允许我们取消请求

// 通过source方法创建一个CancelToken对象
    let source = axios.CancelToken.source()
    axios.get('/data.json',{
      cancelToken:source.token
    }).then((res)=> {
      console.log(res)
    }).catch(err=>{
      // 当你取消请求后就会进入catch方法
      console.log(err)
    })
    // 取消请求,这个message:cancel http会到catch的err中
    source.cancel('cancel http')

好了,这就是axios的一则小记。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值