axios的用法詳解

axios: 是一個類庫,基於Promise管理的Ajax庫,支持瀏覽器和nodejs的http庫,經常使用於Ajax請求。node

特色 從瀏覽器中建立 XMLHttpRequests 從 node.js 建立 http 請求 支持 Promise API 攔截請求和響應 轉換請求數據和響應數據 取消請求 自動轉換 JSON 數據 客戶端支持防護 XSRFios

安裝方法npm

使用 npm:axios

$ npm install axios
複製代碼

使用 bower:api

$ bower install axios
複製代碼

使用 cdn:瀏覽器

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

axios提供了多種請求方式,好比直接發起get或post請求:bash

執行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);
  });
複製代碼

在get請求中的鍵值對拼接成URLENCODED式的字符串而後1以問號傳遞參數的方式,傳遞給服務器。併發

執行post請求app

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

基於Promise,能夠執行多個併發請求:

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(config)

// 發送 POST 請求
axios({
  method: 'post',
  url: '/user/12345',
  data: {
    firstName: 'Fred',
    lastName: 'Flintstone'
  }
})
	.then(function(res) {
	console.log(res)
	});
複製代碼

在業務中,常常將其封裝成爲實例的形式調用,便於作通用配置, 例如:

//util.js
const instance = axios.create({
	baseURL: 'http://some-domain.com/api',
	timeout: 1000,
	header: {
	'Content-Type': 'application/x-www-form-urlencoded'
	}
}) 

export default instance
複製代碼

index.js

<tempalte>
	<div></div>
</template>
<script>
	import Ajax from './util.js'
	export default {
	created(): {
		 Ajax ( {
			method: 'post',
			url: '/user',
			  data: {
					    firstName: 'Fred',
					    lastName: 'Flintstone'
					  }
		}).then(res => {
			console.log(res)
		})
		}
	}
</script>
複製代碼

請求方法的別名

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 這些屬性都沒必要在配置中指定。

併發

處理併發請求的助手函數

axios.all(iterable) axios.spread(callback)

建立實例 能夠使用自定義配置新建一個 axios 實例

axios.create([config])

var instance = axios.create({
  baseURL: 'https://some-domain.com/api/',
  timeout: 1000,
  headers: {'X-Custom-Header': 'foobar'}
});
複製代碼

更多關於axios的配置請參考: www.kancloud.cn/yunye/axios…

相關文章
相關標籤/搜索