//使用默认库的设置创建一个实例, //这个实例中,使用的是默认库的timeout设置,默认值是0。 var instance = axios.create(); //覆盖默认库中timeout的默认值 //此时,所有的请求的timeout时间是2.5秒 instance.defaults.timeout = 2500; //覆盖该次请求中timeout的值,这个值设置的时间更长一些 instance.get('/longRequest',{ timeout:5000 });
拦截器 interceptors
你可以在请求或者返回被then或者catch处理之前对他们进行拦截。
//添加一个请求拦截器 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); });
如果你需要在稍后移除拦截器,你可以
var myInterceptor = axios.interceptors.request.use(function(){/*...*/}); axios.interceptors.rquest.eject(myInterceptor);
你可以在一个axios实例中使用拦截器
var instance = axios.create(); instance.interceptors.request.use(function(){/*...*/});
错误处理 Handling Errors
axios.get('user/12345') .catch(function(error){ if(error.response){ //存在请求,但是服务器的返回一个状态码 //他们都在2xx之外 console.log(error.response.data); console.log(error.response.status); console.log(error.response.headers); }else{ //一些错误是在设置请求时触发的 console.log('Error',error.message); } console.log(error.config); });
你可以使用validateStatus设置选项自定义HTTP状态码的错误范围。
axios.get('user/12345',{ validateStatus:function(status){ return status < 500;//当返回码小于等于500时视为错误 } });
取消 Cancellation
你可以使用cancel token取消一个请求
axios的cancel token API是基于**cnacelable promises proposal**,其目前处于第一阶段。
你可以使用CancelToken.source工厂函数创建一个cancel token,如下:
var CancelToken = axios.CancelToken; var source = CancelToken.source(); axios.get('/user/12345', { cancelToken:source.toke }).catch(function(thrown){ if(axiso.isCancel(thrown)){ console.log('Rquest canceled', thrown.message); }else{ //handle error } }); //取消请求(信息参数设可设置的) source.cancel("操作被用户取消");
你可以给CancelToken构造函数传递一个executor function来创建一个cancel token:
var CancelToken = axios.CancelToken; var cancel; axios.get('/user/12345', { cancelToken: new CancelToken(function executor(c){ //这个executor 函数接受一个cancel function作为参数 cancel = c; }) }); //取消请求 cancel();
注意:你可以使用同一个cancel token取消多个请求。
使用 application/x-www-form-urlencoded 格式化
默认情况下,axios串联js对象为JSON格式。为了发送application/x-wwww-form-urlencoded格式数据,
你可以使用一下的设置。
浏览器 Browser
在浏览器中你可以如下使用URLSearchParams API:
var params = new URLSearchParams(); params.append('param1','value1'); params.append('param2','value2'); axios.post('/foo',params);
注意:URLSearchParams不支持所有的浏览器,但是这里有个垫片(poly fill)可用(确保垫片在浏览器全局环境中)
其他方法:你可以使用qs库来格式化数据。
var qs = require('qs'); axios.post('/foo', qs.stringify({'bar':123}));
Node.js
在nodejs中,你可以如下使用querystring:
var querystring = require('querystring'); axios.post('http://something.com/', querystring.stringify({foo:'bar'}));
你同样可以使用qs库。
promises
axios 基于原生的ES6 Promise 实现。如果环境不支持请使用垫片.
TypeScript
axios 包含TypeScript定义
import axios from 'axios' axios.get('/user?ID=12345')