Vue項(xiàng)目中如何封裝axios(統(tǒng)一管理http請(qǐng)求)
1、需求說(shuō)明
在使用Vue.js框架開(kāi)發(fā)前端項(xiàng)目時(shí),會(huì)經(jīng)常發(fā)送ajax請(qǐng)求服務(wù)端接口,在開(kāi)發(fā)過(guò)程中,需要對(duì)axios進(jìn)一步封裝,方便在項(xiàng)目中的使用。
2、Vue項(xiàng)目結(jié)構(gòu)
在本地創(chuàng)建Vue項(xiàng)目,目錄結(jié)構(gòu)如下:
- public 靜態(tài)資源文件
- src
|- assets 靜態(tài)資源目錄
|- components 公共組件目錄
|- http axios封裝目錄
|- router 路由管理目錄
|- store 狀態(tài)管理目錄
|- views 視圖組件目錄
|- App.vue 根組件
|- main.js 入口文件
- package.json npm配置文件
在Vue項(xiàng)目中創(chuàng)建 http目錄 作為axios的管理目錄,在 http目錄 下兩個(gè)文件,分別是
- /http/index.js 封裝axios方法的文件
- /http/api.js 統(tǒng)一管理接口的文件
3、代碼示例
/http/api.js文件代碼如下:
export default {
'users_add': '/users/add',
'users_find': '/users/find',
'users_update': '/users/update',
'users_delete': '/users/delete'
}
/http/index.js文件代碼如下:
import axios from 'axios'
import api from './api'
//創(chuàng)建axios實(shí)例對(duì)象
let instance = axios.create({
baseURL: 'http://localhost:3000', //服務(wù)器地址
timeout: 5000 //默認(rèn)超時(shí)時(shí)長(zhǎng)
})
//請(qǐng)求攔截器
instance.interceptors.request.use(config=>{
//此處編寫(xiě)請(qǐng)求攔截的代碼,一般用于彈出加載窗口
console.log('正在請(qǐng)求……')
return config
},err=>{
console.error('請(qǐng)求失敗',err)
})
//響應(yīng)攔截器
instance.interceptors.response.use(res=>{
//此處對(duì)響應(yīng)數(shù)據(jù)做處理
console.log('請(qǐng)求成功!')
return res //該返回對(duì)象會(huì)傳到請(qǐng)求方法的響應(yīng)對(duì)象中
},err=>{
// 響應(yīng)錯(cuò)誤處理
console.log('響應(yīng)失??!',err)
// return Promise.reject(err);
})
//封裝axios請(qǐng)求方法,參數(shù)為配置對(duì)象
//option = {method,url,params} method為請(qǐng)求方法,url為請(qǐng)求接口,params為請(qǐng)求參數(shù)
async function http(option = {}) {
let result = null
if(option.method === 'get' || option.method === 'delete'){
//處理get、delete請(qǐng)求
await instance[option.method](
api[option.url],
{params: option.params}
).then(res=>{
result = res.data
}).catch(err=>{
result = err
})
}else if(option.method === 'post' || option.method === 'put'){
//處理post、put請(qǐng)求
await instance[option.method](
api[option.url],
option.params
).then(res=>{
result = res.data
}).catch(err=>{
result = err
})
}
return result
}
export default http
在main.js入口文件中引入封裝好的 /http/index.js 文件,示例代碼如下:
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import http from './http'
Vue.config.productionTip = false
Vue.prototype.$http = http
Vue.use(Elementui)
new Vue({
router,
store,
render: h => h(App)
}).$mount('#app')
在App.vue根組件中測(cè)試axios請(qǐng)求,示例代碼如下:
<template>
<div>
<button @click="getDate">發(fā)送請(qǐng)求</el-button>
</div>
</template>
<script>
export default {
methods: {
getDate(){
this.$http({
method: 'get',
url: 'users_find'
}).then(res=>{
console.log(res)
})
}
}
}
</script>
這里需要有 http://localhost:3000/users/find 接口,不然請(qǐng)求會(huì)失敗!
4、效果演示
啟動(dòng)Vue項(xiàng)目,在瀏覽器中訪問(wèn)Vue項(xiàng)目的地址,我的地址是 http://localhost:8080,點(diǎn)擊按鈕發(fā)送請(qǐng)求,獲取的結(jié)果如下圖所示。
到此,在Vue項(xiàng)目中就完成了簡(jiǎn)單的axios封裝,你也可以根據(jù)自己的實(shí)際需求對(duì)axios進(jìn)行封裝,本文只是提供參考。
到此這篇關(guān)于Vue項(xiàng)目中如何封裝axios(統(tǒng)一管理http請(qǐng)求)的文章就介紹到這了,更多相關(guān)Vue封裝axios管理http請(qǐng)求內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue異步請(qǐng)求導(dǎo)致頁(yè)面數(shù)據(jù)渲染錯(cuò)誤問(wèn)題解決方法示例
這篇文章主要為大家介紹了Vue中異步請(qǐng)求導(dǎo)致頁(yè)面數(shù)據(jù)渲染錯(cuò)誤問(wèn)題解決方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
Vue+Openlayers自定義軌跡動(dòng)畫(huà)
這篇文章主要為大家詳細(xì)介紹了Vue+Openlayers自定義軌跡動(dòng)畫(huà),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09
使用VUE實(shí)現(xiàn)在table中文字信息超過(guò)5個(gè)隱藏鼠標(biāo)移到時(shí)彈窗顯示全部
這篇文章主要介紹了使用VUE實(shí)現(xiàn)在table中文字信息超過(guò)5個(gè)隱藏,鼠標(biāo)移到時(shí)彈窗顯示全部,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09
利用vue組件實(shí)現(xiàn)圖片的拖拽和縮放功能
這篇文章主要給大家介紹了關(guān)于利用vue組件實(shí)現(xiàn)圖片的拖拽和縮放功能的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-01-01
vue中接口域名配置為全局變量的實(shí)現(xiàn)方法
今天小編就為大家分享一篇vue中接口域名配置為全局變量的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-09-09
詳解vue-cli構(gòu)建項(xiàng)目反向代理配置
本篇文章主要介紹了詳解vue-cli構(gòu)建項(xiàng)目反向代理配置,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09

