通過Vue+axios獲取接口數(shù)據(jù)的示例詳解
前言
關(guān)于這個Vue + axios 獲取接口數(shù)據(jù)的小demo,實現(xiàn)效果很簡單,就是在Vue語法中,通過axios來獲取接口的數(shù)據(jù),然后打印出來,這里我們使用的是一個笑話的接口,其中重點關(guān)注的是如何使用axios、通過axios獲取接口數(shù)據(jù),因此這里就不介紹Vue的代碼了,接下來先了解學(xué)習(xí)一下axios概要和使用方法(學(xué)過的可以直接看案例)。
關(guān)于axios概要
什么是axios
- 背景:以前關(guān)于get、post、put等請求,我們第一時間都想到就是jQuery。但如今隨著Vue、React等優(yōu)秀框架的出現(xiàn),jQuery逐漸淡出了市場,同時促使了axios輕量級HTTP庫的出現(xiàn)。
- Axios,是一個基于promise的網(wǎng)絡(luò)請求庫,類似于jQuery的AJAX,作用于node.js和瀏覽器中,它是 isomorphic 的(即同一套代碼可以運行在瀏覽器和node.js中)。在服務(wù)端它使用原生node.js http模塊, 而在客戶端 (瀏覽端) 則使用XMLHttpRequest。
axios特性
- 支持 Promise API
- 攔截請求和響應(yīng)(可以在請求前及響應(yīng)前做某些操作,例如,在請求前想要在這個請求頭中加一些信息,如授權(quán)信息等)。
- 轉(zhuǎn)換請求數(shù)據(jù)和響應(yīng)數(shù)據(jù)(例如,在請求時一些敏感信息需要加密,在返回數(shù)據(jù)時需要解密)
- 取消請求(在解決高并發(fā)時,取消一些不必要的冗余重復(fù)請求)
- 自動轉(zhuǎn)換JSON數(shù)據(jù)(HTTP 請求時,傳輸?shù)臄?shù)據(jù)都是字符串,如果服務(wù)器端返回的數(shù)據(jù)不是字符串類型,就需要使用JSON.parse()對它進行轉(zhuǎn)換。然后向后臺發(fā)起數(shù)據(jù)請求,會自動地進行轉(zhuǎn)換,不需要進行手動操作)。
- 客戶端支持防御XSS攻擊(XSS是客戶端經(jīng)常出現(xiàn)的一種攻擊方式,它發(fā)生在目標(biāo)用戶的瀏覽器層面上,當(dāng)渲染DOM樹的過程中發(fā)生了不在預(yù)期范圍內(nèi)的JavaScript代碼執(zhí)行時,就可以被判定為發(fā)生了XSS攻擊)。
axios瀏覽器支持情況

axios安裝與使用
Github開源地址: https://github.com/axios/axios
- 使用CDN鏈接axios(這種方式較少使用,目前基本上都是腳手架創(chuàng)建項目后采用ES6 Modules引入需要的插件,但是這里的小demo可以使用這個,非常方便)
- 使用 jsDelivr CDN:
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
- 使用 unpkg CDN:
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
- 使用 npm安裝:
$ npm install axios
- 使用 cnpm安裝:
$ cnpm install axios
- 使用 yarn安裝:
$ yarn add axios
axios請求方法
- get:獲取數(shù)據(jù)
- post:提交數(shù)據(jù)(表單提交 + 文件上傳,一般用于提交數(shù)據(jù),如上傳圖片或上傳 Excel 文件等)。
- put:更新數(shù)據(jù)(所有數(shù)據(jù)推送到后端)。
- patch:更新數(shù)據(jù)(只將修改的數(shù)據(jù)推送到后端)
- delete:刪除數(shù)據(jù)
- 這5個請求方法都是由后端定義的,也就是說,因為請求的接口都是請求到后端,然后由后端去操作數(shù)據(jù)庫,把數(shù)據(jù)進行存儲、修改和刪除,所以具體的請求方法都是由后端來確定的。
- 具體就不介紹每個方法的使用案例了
axios的使用方法(以get為例子)
方法一
axios.get("url").then(function (res) {
console.log(res);
}),
function (err) {
console.log(err);
}方法二
axios({
method: "get",
url: "url"
}).then(res => {
console.log(res);
}), (err) => console.log(err)demo介紹
- 布局和樣式就是一個按鈕加一個顯示文字的區(qū)域,這不是重點,重點通過axios獲取到數(shù)據(jù)。
- 功能就是點擊按鈕后,通過axios獲取到數(shù)據(jù),然后顯示在方框中。
- 使用的接口如下:


完整代碼
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<style>
</style>
<body>
<div id="app">
<input type="button" @click="getJoke" value="點擊獲取笑話數(shù)據(jù)">
<div style="width: 400px;height: 400px; border: 1px solid; overflow: auto;">{{joke}}</div>
</div>
</body>
<!-- 通過CDN鏈接axios -->
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script>
//vue2寫法
// var app =new Vue({
// el:'#app',
// data:{
// },
// methods:{
// }
// }).mount('#app');
const {
createApp
} = Vue
createApp({
data() {
return {
joke: "通過axios獲取笑話"
}
},
methods: {
getJoke: function () {
//axios獲取后端接口數(shù)據(jù)方法一
// console.log(this.joke);
var that = this
axios.get("https://autumnfish.cn/api/joke").then(
function (res) {
console.log(res.data);
// console.log(that.joke);
that.joke = res.data
}),
function (err) {
console.log(err);
}
//axios獲取后端接口數(shù)據(jù)方法二
// axios({
// method: "get",
// url: "https://autumnfish.cn/api/joke"
// }).then(res => {
// console.log(res);
// }), (err) => console.log(err)
}
},
}).mount('#app')
</script>
</html>實現(xiàn)效果

案例分析
- 按鈕通過v-on綁定一個點擊事件,點擊之后執(zhí)行axios.get這個方法。
- 文字區(qū)域通過v-model實現(xiàn)數(shù)據(jù)雙向綁定,把通過axios獲取到的數(shù)據(jù)顯示在上面。
- 這里要注意var that = this這段代碼,在axios回調(diào)函數(shù)中的this已經(jīng)改變無法訪問到data中數(shù)據(jù),因此通過var that = this這段代碼把this保存起來,然后回調(diào)函數(shù)中直接使用保存的this即可。
以上就是通過Vue+axios獲取接口數(shù)據(jù)的示例詳解的詳細內(nèi)容,更多關(guān)于Vue axios獲取接口數(shù)據(jù)的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
vue分片上傳視頻并轉(zhuǎn)換為m3u8文件播放的實現(xiàn)示例
前端上傳大文件、視頻的時候會出現(xiàn)超時、過大、很慢等情況,為了解決這一問題,跟后端配合做了一個切片的功能,本文主要介紹了vue分片上傳視頻并轉(zhuǎn)換為m3u8文件播放的實現(xiàn)示例,感興趣的可以了解一下2023-11-11
解決IE11 vue +webpack 項目中數(shù)據(jù)更新后頁面沒有刷新的問題
今天小編就為大家分享一篇解決IE11 vue +webpack 項目中數(shù)據(jù)更新后頁面沒有刷新的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09
el-input限制輸入正整數(shù)的兩種實現(xiàn)方式
el-input框是Element UI庫中的一個輸入框組件,用于接收用戶的輸入,這篇文章主要介紹了el-input限制輸入正整數(shù),需要的朋友可以參考下2024-02-02
淺談Vue使用Elementui修改默認(rèn)的最快方法
這篇文章主要介紹了淺談Vue使用Elementui修改默認(rèn)的最快方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12
Vue2中compiler和runtime模式報錯template compiler is 
本文主要介紹了Vue2中compiler和runtime模式報錯template compiler is not available,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07

