本篇文章為大家介紹如何使用axios方式呼叫介面以及所取得的資料渲染,希望對需要的朋友有幫助!
1、axios的作用是什麼呢?
axios主要是用於向後台發起請求的,還有在請求中做更多是可控功能。 【相關推薦:vue.js影片教學】
2、專案安裝axios及其他環境
開啟cmd進入專案根目錄(src同級目錄) ,輸入指令 npm install axios
3、新建##axios.js 內容複製以下

axios.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | import axios from "axios" ;
import qs from "qs" ;
axios.defaults.baseURL = 'http://localhost:8099' //测试
axios.defaults.headers.post[ "Content-Type" ] = "application/x-www-form-urlencoded;charset=UTF-8" ;
axios.defaults.timeout = 10000;
axios.interceptors.request. use (
config => {
return config;
},
error => {
return Promise.reject(error);
}
);
axios.interceptors.response. use (
response => {
if (response.status == 200) {
return Promise.resolve(response);
} else {
return Promise.reject(response);
}
},
error => {
alert(`异常请求:${JSON.stringify(error.message)}`)
}
);
export default {
post(url, data) {
return new Promise((resolve, reject) => {
axios({
method: 'post' ,
url,
data: qs.stringify(data),
})
.then(res => {
resolve(res.data)
})
. catch (err => {
reject(err)
});
})
},
get(url, data) {
return new Promise((resolve, reject) => {
axios({
method: 'get' ,
url,
params: data,
})
.then(res => {
resolve(res.data)
})
. catch (err => {
reject(err)
})
})
}
};
|
登入後複製
4、直接在vue頁引用, axios.get或.post方法
(vue2需要在main.js中掛載全域,vue3每次引用都需要 import,感覺有些臃腫)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | <template>
<div>
<table>
<tr>
<td>编号</td>
<td>图书名称</td>
<td>作者</td>
</tr>
<tr v- for = "item in books" >
<td>{{item.id}}</td>
<td>{{item.name}}</td>
<td>{{item.author}}</td>
</tr>
</table>
请求状态码:{{code}},请求状态:{{msg}}
</div>
</template>
<script>
import axios from '../js/axios';
export default {
name: "Book" ,
data() {
return {
code: "" ,
msg: "" ,
books: [],
}
},
created() {
this.getShops();
},
methods: {
getShops: function () {
const vm = this;
axios.get( "/book/findAll" , {
}).then( function (response) {
console.log(response.data);
let results = response.data || [];
let code = response.code;
let msg = response.msg;
if (results && results.length > 0) {
vm.code = code;
vm.msg = msg;
vm.books = results;
}
}). catch ( function (error) {
console.log(error);
vm.code = 0;
vm.msg = error;
vm.books = [];
})
}
}
}
</script>
|
登入後複製
展示運作效果
後端介面:

前端展示:
5、踩坑記錄
問題1:vue3 axios Error: Network Error
跨域請求問題,我是在後端攔截器類別中處理的,重寫addCorsMappings 方法
1 2 3 4 5 6 7 8 9 | @Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping( "/**" )
.allowedHeaders( "*" )
.allowedMethods( "*" )
.allowedOriginPatterns( "*" )
.allowCredentials(true);
}
|
登入後複製
問題2:Cannot set properties of undefined (setting 'books')
或者ReferenceError: books is not defined
不能直接給變量賦值,需要透過 methods 方法中
const vm = this; 取得變數賦值;
vue 請求介面程式碼需要放置methods,且在created()或mounted()週期函數中呼叫該方法。
1 2 3 4 5 6 7 8 | created() {
this.getShops();
},
methods: {
getShops: function () {
const vm = this;
}
}
|
登入後複製
問題3:Uncaught ReferenceError: Vue is not defined
或Cannot read properties of undefined (reading 'get')
##vue3不是透過後面物件掛載,我每個頁面直接引用了axios(目前vue3好像只有這種方式)

# 6、vue3入門總結
入門前一定要先認真閱讀vue官網(https://v3.cn.vuejs.org/),了解常見函數及一些基礎的用法。才能在開發中減少踩坑! ! !
以上是vue3 axios的使用介紹及資料渲染的詳細內容。更多資訊請關注PHP中文網其他相關文章!