1. 程式人生 > >關於axios及其在vue中的配置

關於axios及其在vue中的配置

求和 www view perm 服務 如果 dmi 設置 ams

  什麽是axios?官方解釋:axios 是一個基於 promise 的 HTTP 庫,可以用在瀏覽器和 node.js 中。

  具有以下特點:

  • 從瀏覽器中創建 XMLHttpRequests
  • 從 node.js 創建 http 請求
  • 支持 Promise API
  • 攔截請求和響應
  • 轉換請求數據和響應數據
  • 取消請求
  • 自動轉換 JSON 數據
  • 客戶端支持防禦 XSRF

  但是對於目前的我而言,它就是一種用來發送網絡請求的方法。

  使用axios發送請求很簡單,代碼也極其條理化。

  安裝方法:

  (1)、使用npm:

  $ npm install axios

  (2)、使用bower:

  $ bower install axios

  (3)、使用CDN加速服務

  例如:<script src="https://cdn.bootcss.com/axios/0.18.0/axios.min.js"></script>

  使用axios發送請求:

  1、執行get請求: 

// 為給定 ID 的 user 創建請求
axios.get(‘/user?ID=12345‘)
.then(function (response) {
    console.log(response);
})
.catch(function (error) {
    console.log(error);
});

// 可選地,上面的請求可以這樣做
axios.get(‘/user‘, {
    params: {
        ID: 12345
    }
})
.then(function (response) {
    console.log(response);
})
.catch(function (error) {
    console.log(error);
});    

  

  2、執行post請求:

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

  

  3、執行多個並發請求:

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) {
    // 兩個請求現在都執行完成
}));

  

  當然也可以通過向axios傳遞相關配置來創建請求,例如,我們在vue項目中使用axios來發送請求,這種方式就及其必要了。舉例說明:我們在寫項目的時候,有時候用的是一個接口地址,但是後期因為某種原因需要變更接口地址,這種情況下,假如我們之前創建請求時都是使用的絕對路徑,也就是絕對的url,而我們知道一個項目中通常會包含許多的請求,遇到這種情況就必須一個一個的去改了。

  但是,如果我們在axios配置中配置一個baseURL,後面在發送請求的時候,只需要寫上接口的相對url就行了。這種情況下,如果遇到需要更改接口地址的話,只需要更改配置項中的baseURL即可,而不用一個一個的去更改,是不是就方便多了。

  這裏以基於iview的後臺管理為例(可參考 基於iview的後臺管理),在項目的index.html文件中,引入axios文件,可通過CDN方式引入,然後就可以在src/main.js文件中添加baseURL,如:

axios.defaults.baseURL = ‘https://some-domain.com/api/‘;

  

  這樣在其他要發送請求的地方只需要這樣寫即可:

global.axios.post(‘adminN_1.service‘, {
    // 接口的上傳參數
})
.then(data => {
    console.log(‘返回數據‘, data)
})
.catch(e => {
    console.log(e)
})

  

  說明:

  (1)、如果沒有指定 method,請求將默認使用 get 方法。

  (2)、`baseURL` 將自動加在 `url` 前面,除非 `url` 是一個絕對 URL。通過設置一個 `baseURL` 便於為 axios 實例的方法傳遞相對 URL,這樣也便於以後更改接口地址

關於axios及其在vue中的配置