您现在的位置:首页 >> 前端 >> 内容

vue2.0之axios使用详解(一)

时间:2017/7/14 10:20:42 点击:

  核心提示:爱可信基于承诺的HTTP请求客户端,可同时在浏览器和Node.js的中使用功能特性在浏览器中发送的XMLHttpRequest请求在node.js的中发送HTTP请求支持PromiseAPI拦截请求和...

爱可信

基于承诺的HTTP请求客户端,可同时在浏览器和Node.js的中使用

功能特性

在浏览器中发送的XMLHttpRequest请求在node.js的中发送HTTP请求支持PromiseAPI拦截请求和响应转换请求和响应数据自动转换JSON数据客户端支持保护安全免受XSRF攻击

浏览器支持

vue2.0之axios使用详解(一)

安装

使用凉鞋

$ bower安装axios

使用NPM:

$ npm安装axios

例子

发送一个GET请求

//向具有给定ID的用户发出请求
axios.get('/用户?ID = 12345')
  。然后(功能(响应){
    的的console.log(响应);
  })
  .catch(功能(响应){
    的的console.log(响应);
  });

//可选地,上述请求也可以作为
axios.get('/ user',{
    参数:{
      ID:12345
    }
  })
  。然后(功能(响应){
    的的console.log(响应);
  })
  .catch(功能(响应){
    的的console.log(响应);
  });

发送一个POST请求

axios.post('/ user',{
    名字: '弗雷德',
    名字:“打火石”
  })
  。然后(功能(响应){
    的的console.log(响应);
  })
  .catch(功能(响应){
    的的console.log(响应);
  });

发送多个并发请求

function getUserAccount(){
  return axios.get('/ user / 12345');
}

function getUserPermissions(){
  return axios.get('/ user / 12345 / permissions');
}

axios.all([getUserAccount(),getUserPermissions()])
  。然后(axios.spread(函数(ACCT,烫发){
    //两个请求现在完成
  }));

axios API

可以通过给爱可信传递对应的参数来定制请求:

爱可信(配置)
//发送POST请求
爱可信({
  方法: '后',
  url:'/ user / 12345',
  资料:{
    名字: '弗雷德',
    名字:“打火石”
  }
});
axios(url [,config])
// Sned一个GET请求(默认方法)
Axios公司('/用户/ 12345');

请求方法别名

为方便起见,我们为所有支持的请求方法都提供了别名

axios.get(url [,config])
axios.delete(url [,config])
axios.head(url [,config])
axios.post(url [,data [,config]])
axios.put(url [,data [,config]])
axios.patch(url [,data [,config]])
注意

当使用别名方法时,网址,方法和数据属性不需要在配置参数里面指定。

并发

处理并发请求的帮助方法

axios.all(迭代器)
axios.spread(回调)

创建一个实例

你可以用自定义配置创建一个新的爱可信实例。

axios.create([配置])
var instance = axios.create({
  基本URL: 'HTTPS://some-domain.com/api/',
  超时:1000,
  标题:{ 'X-定制报头': 'foobar的'}
});

实例方法

所有可用的实例方法都列在下面了,指定的配置将会和该实例的配置合并。

爱可信公司#请求(配置)
axios#get(url [,config])
axios#delete(url [,config])
axios#head(url [,config])
axios#post(url [,data [,config]])
axios#put(url [,data [,config]])
axios#patch(url [,data [,config]])

请求配置

下面是可用的请求配置项,只有网址是必需的。如果没有指定方法,默认的请求方法是GET。

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

  //“方法”是在请求时使用的请求方法
  方法: '得到',//默认

  //`baseURL`将被添加到`url`,除非`url`是绝对的。 
  //可以方便的设置`baseURL`为一个实例的爱可信传递相对URL 
  //到该实例的方法。
  基本URL: 'HTTPS://some-domain.com/api/',

  //`transformRequest`允许在将请求数据发送到服务器之前进行更改
  //这仅适用于请求方法 'PUT', 'POST' 和 'PATCH'
  //数组中的最后一个函数必须返回一个字符串或一个ArrayBuffer
  transformRequest:[功能(数据){
    //做任何你想要转换的数据

    返回数据;
  }],

  //`transformResponse`允许更改之前做出的响应数据
  //它传递给/ catch
  transformResponse:[功能(数据){
    //做任何你想要转换的数据

    返回数据;
  }],

  //“头”是要发送的自定义标题
  标题:{ 'X-请求-随着': '的XMLHttpRequest'},

  //`params`是要与请求一起发送的URL参数
  参数:{
    ID:12345
  },

  //`paramsSerializer`是一个可选的函数,负责序列化`params`
  //(例如https://www.npmjs.com/package/qs,https://api.jquery.com/jquery.param/)
  paramsSerializer:功能(PARAMS){
    return Qs.stringify(params,{arrayFormat:'bracket'})
  },

  //`data`是作为请求体发送的数据
  //仅适用于请求方式 'PUT', 'POST' 和 'PATCH'
  //当没有设置`transformRequest`时,必须是字符串,ArrayBuffer或散列
  资料:{
    名字: '弗雷德'
  },

  //`timeout`指定请求超时前的毫秒数。
  //如果请求比“超时”长,请求将被中止。
  超时:1000,

  //“withCredentials”表示跨站点访问控制是否请求
  //应该使用凭据
  withCredentials:假的,//默认

  //`adapter`允许自定义处理请求,使测试更容易。
  //调用`resolve`或`reject`并提供一个有效的响应(参见[response docs](#response-api))。
  适配器:函数(解析,拒绝,配置){
    / * ... * /
  },

  //`auth`表示应该使用HTTP Basic auth,并提供凭据。
  //这将设置一个“授权”头,覆盖任何现有的
  //使用`header`设置的`Authorization`自定义头文件。
  AUTH:{
    用户名: 'janedoe',
    密码: 's00pers3cret'
  }

  //“的responseType”表示服务器响应的数据类型
  // options are'arraybuffer','blob','document','json','text'
  responseType:'json',// default

  //`xsrfCookieName`是用作XSRF令牌值的饼干的名称
  xsrfCookieName: 'XSRF-TOKEN',//默认

  //`xsrfHeaderName`是携带XSRF令牌值的HTTP头的名称
  xsrfHeaderName: 'X-XSRF-TOKEN',//默认

  //`progress'可以处理'POST'和'PUT uploads'的进度事件
  //以及“GET”下载
  进展:功能(progressEvent){
    //用本地进度事件做任何你想要的
  }
}

响应的数据结构

响应的数据包括下面的信息:

{
  //“数据”是服务器提供的响应
  数据:{},

  //“状态”是服务器响应的HTTP状态码
  状态:200,

  //'statusText`是来自服务器响应的HTTP状态消息
  状态文本: 'OK',

  //“头”服务器响应的头文件
  标题:{},

  //`config`是为请求提供给`axios`的配置
  配置:{}
}

当使用或者抓时,你会收到下面的响应:

axios.get('/用户/ 12345')
  。然后(功能(响应){
    的的console.log(response.data);
    的的console.log(response.status);
    的的console.log(response.statusText);
    的的console.log(response.headers);
    的的console.log(response.config);
});

默认配置

你可以为每一个请求指定默认配置。

全局爱可信默认配置

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';

自定义实例默认配置

//创建实例时设置默认值
var instance = axios.create({
  基本URL: 'HTTPS://api.example.com'
});

//修改实例后的默认值
instance.defaults.headers.common ['Authorization'] = AUTH_TOKEN;

配置的优先顺序

配置将与优先顺序合并。该命令是库默认值,在实例中找到inlib / defaults.js,thendefaultsproperty,并且请求的finallyconfigargument。后者将优先于前者。这是一个例子。

//使用库提供的配置默认值创建一个实例
//此时,超时配置值为“0”,与库的默认值一样
var instance = axios.create();

//为库重写超时默认值
//现在所有的请求将等待2.5秒才能超时
instance.defaults.timeout = 2500;

//覆盖此请求的超时时间,因为它已知需要很长时间
instance.get('/ longRequest',{
  超时:5000
}); 

拦截器

你可以在处理则或捕捞之前拦截请求和响应

//添加一个请求拦截器
axios.interceptors.request.use(函数(配置){
    //发送请求之前做某事
    返回配置
  },函数(误差){
    //做某些请求错误
    return Promise.reject(error);
  });

//添加一个响应拦截器
axios.interceptors.response.use(功能(响应){
    //用响应数据做某事
    回报响应;
  },函数(误差){
    //做某事与响应错误
    return Promise.reject(error);
  });

移除一个拦截器:

var myInterceptor = axios.interceptors.request.use(function(){/*...*/});
axios.interceptors.request.eject(myInterceptor);

你可以给一个自定义的爱可信实例添加拦截器:

var instance = axios.create();
instance.interceptors.request.use(函数(){/*...*/});

错误处理

axios.get('/用户/ 12345')
  .catch(功能(响应){
    if(response instanceof Error){
      //设置触发错误的请求时发生了一些事情
      的console.log( '错误',response.message);
    } else {
      //请求已经完成,但是服务器使用状态码进行响应
      //超出了2XX的范围
      的的console.log(response.data);
      的的console.log(response.status);
      的的console.log(response.headers);
      的的console.log(response.config);
    }
  });

承诺

轴承依赖一个原生的ES6 Promise实现,如果你的浏览器环境不支持ES6 Promises,你需要引入polyfill

打字稿

爱可信包含一个打字稿定义

/// 
进口*作为“爱可信”的轴; 
axios.get('?/用户ID = 12345');

积分

axios受到$ http服务提供者的极大启动。最终的axios是为在Angular之外使用独立的$ http服务。

执照

MIT

Tags:VU UE E2 20 
作者:网络 来源:huang100qi