从xhr到axios源码分析(二)

1.axios的理解与使用

    在我们日常的开发中大家都应该或多或少的涉及到用axios发送请求,尤其是vue框架,原因是vue主推发送请求用axios做交互。
1.axios的特点:
    (1)基于promise的ajax请求库
    (2)浏览器端/node端都能使用
    (3)支持请求/响应拦截器
    (4)支持取消请求
    (5)请求/响应数据转换
    (6)批量发送多个请求(promise.all)
2.发送请求的方法:
    axios.request(config)
    axios.get(url[, config])
    axios.delete(url[, config])
    axios.head(url[, config])
    axios.options(url[, config])
    axios.post(url[, data[, config]])
    axios.put(url[, data[, config]])
    axios.patch(url[, data[, config]])
3.Interceptors(拦截器)

// Add a request interceptor
//请求拦截器发送请求之前执行
axios.interceptors.request.use(function (config) {
    // Do something before request is sent
    return config;
  }, function (error) {
    // Do something with request error
    return Promise.reject(error);
  });
  // Add a response interceptor
  //响应拦截器在得到响应数据之后执行
axios.interceptors.response.use(function (response) {
    // Do something with response data
    return response;
  }, function (error) {
    // Do something with response error
    return Promise.reject(error);
  });

4.axios默认配置
axios.defaults.baseURL = ‘https://api.example.com’;默认请求地址
axios.defaults.headers.common[‘Authorization’] = AUTH_TOKEN;
axios.defaults.headers.post[‘Content-Type’] = ‘application/x-www-form-urlencoded’;默认编码方式
5.axios.create()
说明:axios的2次封装,为什么是2次封装,因为axios是封装的xhr。所以axios.create是等于对xhr的2次封装,而不是对axios的2次封装。

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>axios.create</title>
</head>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script>
  // axios.create(config)
  // (1)根据指定的配置创建一个新的axios
  // (2)新的axios没有取消请求和批量发送请求的方法,其他语法相同
  // (3)创建这个语法的原因:可能在一个项目中用到2个不同的服务器

  axios.default.baseURL = 'https://www.baidu.com'
  axios({
    url:'/get'//https://www.baidu.com/get
  })

  //当同一个项目用到2个不同的服务器地址的时候,不可能去修改default.baseURL
  const instance = axios.create({
   baseURL:'http://www.google.cn'
  })
  //用instance发送请求
  instance({
    url:'/get'//http://www.google.cn/get
  })
</script>

</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lbchenxy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值