axios的用法詳解

前端嵐楓發表於2019-03-26

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

特點 從瀏覽器中建立 XMLHttpRequests 從 node.js 建立 http 請求 支援 Promise API 攔截請求和響應 轉換請求資料和響應資料 取消請求 自動轉換 JSON 資料 客戶端支援防禦 XSRF

安裝方法

使用 npm:

$ npm install axios
複製程式碼

使用 bower:

$ bower install axios
複製程式碼

使用 cdn:

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

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

執行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請求

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…

相關文章