axios中文文檔 vue
https://github.com/mzabriskie/axios#using-applicationx-www-form-urlencoded-format axios文檔node
在處理http請求方面,已經不推薦使用vue-resource了,而是使用最新的axios,下面作一個簡單的介紹。jquery
使用nodeios
npm install axios
使用cdngit
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
// Make a request for a user with a given ID axios.get('/user?ID=12345') .then(function (response) { console.log(response); }) .catch(function (error) { console.log(error); }); // Optionally the request above could also be done as axios.get('/user', { params: { ID: 12345 } }) .then(function (response) { console.log(response); }) .catch(function (error) { console.log(error); });
axios.post('/user', { firstName: 'Fred', 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([getUserAccount(), getUserPermissions()]) .then(axios.spread(function (acct, perms) { // Both requests are now complete }));
這個的使用方法其實和原生的ajax是同樣的,一看就懂。github
使用 application/x-www-urlencoded 形式的post請求:ajax
var qs = require('qs'); axios.post('/bbg/goods/get_goods_list_wechat', qs.stringify({"data": JSON.stringify({ "isSingle": 1, "sbid": 13729792, "catalog3": 45908012, "offset": 0, "pageSize": 25 })}), { headers: { "BBG-Key": "ab9ef204-3253-49d4-b229-3cc2383480a6", } }) .then(function (response) { // if (response.data.code == 626) { console.log(response); // } }).catch(function (error) { console.log(error); });
具體使用參考文檔: https://github.com/mzabriskie/axios#using-applicationx-www-form-urlencoded-formatnpm
注意: 對於post請求,通常狀況下,第一個參數是url,第二個參數是要發送的請求體的數據,第三個參數是對請求的配置。json
另外:axios默認是application/json格式的,若是不適用 qs.stringify 這種形式, 即便添加了請求頭 最後的content-type的形式仍是 json 的。 axios
對於post請求,咱們也可使用下面的jquery的ajax來實現:
$.ajax({ url:'api/bbg/goods/get_goods_list_wechat', data:{ 'data': JSON.stringify({ "isSingle": 1, "sbid": 13729792, "catalog3": 45908012, "offset": 0, "pageSize": 25 }) }, beforeSend: function(request) { request.setRequestHeader("BBG-Key", "ab9ef204-3253-49d4-b229-3cc2383480a6"); }, type:'post', dataType:'json', success:function(data){ console.log(data); }, error: function (error) { console.log(err); }, complete: function () { } });
顯然,經過比較,能夠發現,jquery的請求形式更簡單一些,且jqury默認的數據格式就是 application/x-www-urlencoded ,從這方面來說會更加方便一些。
另外,對於兩個一樣的請求,即便都請求成功了,可是二者請求獲得的結果也是不同的,以下:
不難看到: 使用axios返回的結果會比jquery的ajax返回的結構(實際的結果)多包裝了一層,包括相關的config、 headers、request等。
對於get請求, 我我的仍是推薦使用axios.get()的形式,以下所示:
axios.get('/bbg/shop/get_classify', { params: { sid: 13729792 }, headers: { "BBG-Key": "ab9ef204-3253-49d4-b229-3cc2383480a6" } }) .then(function (response) { if (response.data.code == 130) { items = response.data.data; store.commit('update', items); console.log(items); } console.log(response.data.code); }).catch(function (error) { console.log(error); console.log(this); });
即第一個參數是:url, 第二個參數就是一個配置對象,咱們能夠在配置對象中設置 params 來傳遞參數。
我的理解爲何get沒有第二個參數做爲傳遞的查詢字符串,而post有第二個參數做爲post的數據。
由於get能夠沒有查詢字符串,也能夠get請求,可是post必需要有post的數據,要否則就沒有使用post的必要了。