首頁  >  文章  >  web前端  >  axios處理http發送Post和get

axios處理http發送Post和get

php中世界最好的语言
php中世界最好的语言原創
2018-04-17 15:47:232260瀏覽

這次帶給大家axios處理http發送Post和get,axios處理http發送Post和get的注意事項有哪些,下面就是實戰案例,一起來看一下。

axios中文文檔  

# https://github.com/mzabriskie/axios#using-applicationx-www-form-urlencoded-format   axios文件

# 在處理http請求方面,已經不建議使用vue-resource了,而是使用最新的axios,下面做一個簡單的介紹。

安裝

使用node

npm install axios

使用cdn

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

基本使用方法

# get請求

// 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);
 });

# Post請求

 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是一樣的,一看就懂。

使用 application/x-www-urlencoded 形式的post請求:

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-format

注意: 對於post請求,一般情況下,第一個參數是url,第二個參數是要傳送的請求體的數據,第三個參數是對請求的配置。

另外:axios預設是application/json格式的,如果不適用 qs.stringify 這種形式, 即使新增了請求頭 最後的content-type的形式還是 json 的。

對於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的必要了。

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

JS上傳檔案時顯示進度條

#layer前端元件圖片顯示功能

以上是axios處理http發送Post和get的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn