在Vue中,主要有兩種方式進行前端網絡請求,分別是Vue-resource和Axios。本文將主要介紹Vue-resource在Webpack中的使用。
Webpack是當前前端開發領域最流行的打包工具之一。為了在Webpack中使用Vue-resource,首先需要安裝Vue-resource和Vue-loader這兩個依賴。
npm install vue-resource vue-loader --save-dev
安裝完成后,就可以在Webpack中使用Vue-resource了。在Vue實例中使用Vue-resource也很簡單,只需要在main.js中引入Vue-resource并將其掛載到Vue.prototype上即可。
import Vue from 'vue'
import VueResource from 'vue-resource'
Vue.use(VueResource);
現在可以在Vue實例中使用Vue-resource的$http屬性來進行網絡請求了。$http是一個返回Promise對象的函數,通過返回Promise對象,可以使用ES6的async/await語法來進行異步操作。
export default {
async created() {
const res = await this.$http.get('/api/data');
console.log(res.data);
}
}
當然,也可以使用其他方法,如post、put和delete。使用這些方法前,需要先設置一些配置項,比如請求的url,請求的header等。
export default {
async created() {
const headers = { 'Content-Type': 'application/json' };
const body = { name: 'test' };
const res = await this.$http.post('/api/create', body, { headers });
console.log(res.data);
}
}
另一個常用的功能是攔截器。Vue-resource中提供了多個攔截器,如請求攔截器、響應攔截器等。通過這些攔截器,我們可以在請求發送前進行一些處理,或者在響應返回后進行一些處理,如打印日志、修改請求頭等。
export default {
async created() {
this.$http.interceptors.push((request, next) =>{
console.log('請求攔截器:' + request.url);
next((response) =>{
console.log('響應攔截器:' + response.url);
})
});
const res = await this.$http.get('/api/data');
console.log(res.data);
}
}
最后需要注意的是,Vue-resource在Vue 3中已經被廢棄了。對于Vue 3,使用Axios是更好的選擇。但是,在開發舊項目或者Vue 2項目中,Vue-resource還是一個不錯的選擇。