axios学习

axios

1、什么是axios?

随着 vuejs 作者尤雨溪在2016年发布消息,不再继续维护vue-resource,并推荐大家使用 axios 开始,axios 被越来越多的人所了解。目前已经是最流行的前端ajax请求库。

功能特点
  • 在浏览器中发送Ajax请求。
  • 在node.js中发送http请求。
  • 支持promise api
  • 拦截请求和响应
  • 转换请求和响应数据
  • 取消请求
  • 自动转换JSON数据
  • 客户端支持防止 CSRF/XSRF

2、引入方式

<!-- npm yarn是以后项目中常用到的,cdn是学习阶段比较好用的 -->
$ npm install axios
$ cnpm install axios //taobao源
<!-- 或者使用cdn:推荐国内的www.bootcdn.cn/ -->
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

3、使用举例

axios({
    method:"get",
    url:"localhost:3000/list",
    data:{
        id:123
    }
}).then(response=>{
    console.log(response);
}).catch(function (error) {
    console.log(error);
});

4、其他发送方法

4.1 实现get请求
// 向具有指定ID的用户发出请求
axios.get('/user?ID=12345')
    .then(function (response) {
    console.log(response);
})
    .catch(function (error) {
    console.log(error);
});
// 也可以通过 params 对象传递参数
axios.get('/user', {
    params: {
        ID: 12345
    }
})
    .then(function (response) {
    console.log(response);
})
    .catch(function (error) {
    console.log(error);
});
4.2 实现POST请求
axios.post('/user', {
    firstName: 'Fred',
    lastName: 'Flintstone'
})
    .then(function (response) {
    console.log(response);
})
    .catch(function (error) {
    console.log(error);
});
4.3 发送多个请求
function getUserAccount() {
    return axios.get('/user/12345');
}
function getUserPermissions() {
    return axios.get('/user/12345/permissions');
}
axios.all([getUserAccount(), getUserPermissions()])
    .then(axios.spread(function (acct, perms) {
    //两个请求现已完成
}));

5、返回结果解析

6、配置对象说明

{
    // `url`是将用于请求的服务器URL
    url: '/user',

        // `method`是发出请求时使用的请求方法
    method:"get"

    // `baseURL`将被添加到`url`前面,除非`url`是绝对的。
    // 可以方便地为 axios 的实例设置`baseURL`,以便将相对 URL 传递给该实例的方法。
    baseURL: 'https://some-domain.com/api/',

    // `headers`是要发送的自定义 headers
    headers: {'X-Requested-With': 'XMLHttpRequest'},

                    // `params`是要与请求一起发送的URL参数
                    // 必须是纯对象或URLSearchParams对象
    params: {
          ID: 12345
    }

    // `data`是要作为请求主体发送的数据
    // 仅适用于请求方法“PUT”,“POST”和“PATCH”
    data: {
        firstName: 'Fred'
    },

    // `timeout`指定请求超时之前的毫秒数。
    // 如果请求的时间超过'timeout',请求将被中止。
    timeout: 1000,
// “responseType”表示服务器将响应的数据类型
    // 包括 'arraybuffer', 'blob', 'document', 'json', 'text', 'stream'
    responseType: 'json', // default
}

7、默认配置

axios.defaults.method = "get";
axios.defaults.baseURL = "http://localhost:3000";

8、创建实例对象发送请求

如果一个页面有多个请求服务器,比如 www.a.comwww.b.com,我们每次发送请求时,都要将域名写一遍,十分麻烦,如果设置默认配置,又只能设置一个,这个时候我们就可以创建实例对象,去发送请求,

var instance = axios.create({
  baseURL: 'https://www.a.com/api/',
  timeout:2000
});
instance.get("/list").then(response =>{
   console.log(response) 
});

9、拦截器

拦截器就是一些函数,共分为两大类:请求拦截器和响应拦截器

请求拦截器作用:在发送请求之前,对请求的参数或者内容进行一些处理或校验,如果没有问题,再去发送请求,否则取消请求。

响应拦截器作用:

//添加请求拦截器
axios.interceptors.request.use(function(config){
     //在发送请求之前做某事
     return config;
   }function(error){
     //请求错误时做些事
     return Promise.reject(error);
   };

//添加响应拦截器
axios.interceptors.response.use(function(response){
     //对响应数据做些事
      return response;
   }function(error){
     //请求错误时做些事
     return Promise.reject(error);
   };
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值