溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

vue中axios處理http發(fā)送請(qǐng)求的示例(Post和get)

發(fā)布時(shí)間:2020-09-04 18:22:02 來(lái)源:腳本之家 閱讀:134 作者:Wayne Zhu 欄目:web開(kāi)發(fā)

本文介紹了vue中axios處理http發(fā)送請(qǐng)求的示例(Post和get),分享給大家,具體如下:

axios中文文檔  

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

在處理http請(qǐng)求方面,已經(jīng)不推薦使用vue-resource了,而是使用最新的axios,下面做一個(gè)簡(jiǎn)單的介紹。

安裝

使用node

npm install axios 

使用cdn

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

基本使用方法

get請(qǐng)求

// 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請(qǐng)求

 axios.post('/user', {
  firstName: 'Fred',
  lastName: 'Flintstone'
 })
 .then(function (response) {
  console.log(response);
 })
 .catch(function (error) {
  console.log(error);
 });

同時(shí)執(zhí)行多個(gè)請(qǐng)求

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

這個(gè)的使用方法其實(shí)和原生的ajax是一樣的,一看就懂。

使用 application/x-www-urlencoded 形式的post請(qǐng)求:

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

注意: 對(duì)于post請(qǐng)求,一般情況下,第一個(gè)參數(shù)是url,第二個(gè)參數(shù)是要發(fā)送的請(qǐng)求體的數(shù)據(jù),第三個(gè)參數(shù)是對(duì)請(qǐng)求的配置。

另外:axios默認(rèn)是application/json格式的,如果不適用 qs.stringify 這種形式, 即使添加了請(qǐng)求頭 最后的content-type的形式還是 json 的。

對(duì)于post請(qǐng)求,我們也可以使用下面的jquery的ajax來(lái)實(shí)現(xiàn):

    $.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 () {

     }
    });

顯然,通過(guò)比較,可以發(fā)現(xiàn),jquery的請(qǐng)求形式更簡(jiǎn)單一些,且jqury默認(rèn)的數(shù)據(jù)格式就是 application/x-www-urlencoded ,從這方面來(lái)講會(huì)更加方便一些。

另外,對(duì)于兩個(gè)同樣的請(qǐng)求,即使都請(qǐng)求成功了,但是兩者請(qǐng)求得到的結(jié)果也是不一樣的,如下:

vue中axios處理http發(fā)送請(qǐng)求的示例(Post和get)

不難看到: 使用axios返回的結(jié)果會(huì)比jquery的ajax返回的結(jié)構(gòu)(實(shí)際的結(jié)果)多包裝了一層,包括相關(guān)的config、 headers、request等。

對(duì)于get請(qǐng)求, 我個(gè)人還是推薦使用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);
 });

即第一個(gè)參數(shù)是:url, 第二個(gè)參數(shù)就是一個(gè)配置對(duì)象,我們可以在配置對(duì)象中設(shè)置 params 來(lái)傳遞參數(shù)。

個(gè)人理解為什么get沒(méi)有第二個(gè)參數(shù)作為傳遞的查詢(xún)字符串,而post有第二個(gè)參數(shù)作為post的數(shù)據(jù)。

因?yàn)間et可以沒(méi)有查詢(xún)字符串,也可以get請(qǐng)求,但是post必須要有post的數(shù)據(jù),要不然就沒(méi)有使用post的必要了。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI