基於http客戶端的promise,面向瀏覽器和nodejshtml
瀏覽器端發起XMLHttpRequests請求node
node端發起http請求jquery
支持Promise APIios
監聽請求和返回git
轉化請求和返回es6
取消請求github
自動轉化json數據npm
客戶端支持抵禦json
使用npm:axios
$ npm i axiso
使用 bower
$ bower instal axios
使用cdn
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
使用一個 GET
請求
發起一個 POST
請求
axios.post('/user',{
firstName:'friend', lastName:'Flintstone' }) .then(function(response){ console.log(response); }) .catch(function(error){ console.log(error); });
發起一個多重併發請求
function getUserAccount(){ return axios.get('/user/12345'); } function getUserPermissions(){ return axios.get('/user/12345/permissions'); } axios.all([getUerAccount(),getUserPermissions()]) .then(axios.spread(function(acc,pers){ //兩個請求如今都完成 }));
axios
可以在進行請求時進行一些設置。
axios(config)
//發起 POST請求
axios({ method:'post', url:'/user/12345', data:{ firstName:'Fred', lastName:'Flintstone' } });
axios(url[,config])
//發起一個GET請求
axios('/user/12345/);
爲了方便,axios提供了全部請求方法的重命名支持
axios.request(config)
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]])
當時用重命名方法時 url
, method
,以及 data
特性不須要在config中設置。
有用的方法
axios.all(iterable)
axios.spread(callback)
你能夠使用自定義設置建立一個新的實例
var instance = axios.create({
baseURL:'http://some-domain.com/api/', timeout:1000, headers:{'X-Custom-Header':'foobar'} });
下面列出了一些實例方法。具體的設置將在實例設置中被合併。
axios#request(config)
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]])
如下列出了一些請求時的設置。只有 url
是必須的,若是沒有指明的話,默認的請求方法是GET
.
一個請求的返回包含如下信息
使用 then
,你會接受打下面的信息
使用 catch
時,或者傳入一個 reject callback
做爲 then
的第二個參數,那麼返回的錯誤信息將可以被使用。
你能夠設置一個默認的設置,這設置將在全部的請求中有效。
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({ baseURL:'https://api.example.com' }); //在實例建立以後改變默認值 instance.defaults.headers.common['Authorization'] = AUTH_TOKEN;
設置(config)將按照優先順序整合起來。首先的是在 lib/defaults.js
中定義的默認設置,其次是 defaults
實例屬性的設置,最後是請求中 config
參數的設置。越日後面的等級越高,會覆蓋前面的設置。
看下面這個例子:
//使用默認庫的設置建立一個實例,
//這個實例中,使用的是默認庫的timeout設置,默認值是0。 var instance = axios.create(); //覆蓋默認庫中timeout的默認值 //此時,全部的請求的timeout時間是2.5秒 instance.defaults.timeout = 2500; //覆蓋該次請求中timeout的值,這個值設置的時間更長一些 instance.get('/longRequest',{ timeout:5000 });
你能夠在 請求
或者 返回
被 then
或者 catch
處理以前對他們進行攔截。
若是你須要在稍後移除攔截器,你能夠
你能夠在一個axios實例中使用攔截器
你能夠使用 validateStatus
設置選項自定義HTTP狀態碼的錯誤範圍。
你能夠使用 cancel token 取消一個請求
axios的cancel token API是基於**cnacelable promises proposal**,其目前處於第一階段。
你能夠使用 CancelToke.source
工廠函數建立一個cancel token,以下:
你能夠給 CancelToken
構造函數傳遞一個executor function來建立一個cancel token:
注意:你能夠使用同一個cancel token取消多個請求。
默認狀況下,axios串聯js對象爲 JSON
格式。爲了發送 application/x-wwww-form-urlencoded
格式數據,
你能夠使用一下的設置。
在瀏覽器中你能夠以下使用 URLSearchParams
API:
var params = new URLSearchParams(); params.append('param1','value1'); params.append('param2','value2'); axios.post('/foo',params);
注意: URLSearchParams
不支持全部的瀏覽器,可是這裏有個 墊片
(poly fill)可用(確保墊片在瀏覽器全局環境中)
其餘方法:你能夠使用 qs
庫來格式化數據。
在nodejs中,你能夠以下使用 querystring
:
你一樣能夠使用 qs
庫。
axios 基於原生的ES6 Promise 實現。若是環境不支持請使用 墊片 .