可能是vue中使用axios最詳細(xì)教程
前提條件:vue-cli 項目
安裝:
npm axios from 'axios'
較科學(xué)的封裝好的axios:(new-axios.js)
import?axios?from?'axios'
import?{?Notify?}?from?'vant';
//?import?Vue?from?'vue'
//?import?store?from?'@/store'? // 我此項目沒有用到vuex,所以vuex代碼的都注釋了,需要的自己打開使用
//?import?{ACCESS_TOKEN}?from?'@/store/mutation-types'
//?創(chuàng)建?axios?實例
const?requests?=?axios.create({
??baseURL:?process.env.VUE_APP_API,?// 基礎(chǔ)url,如果是多環(huán)境配置這樣寫,也可以像下面一行的寫死。
// baseURL: 'http://168.192.0.123',
??timeout:?6000?//?請求超時時間
})
?
// 錯誤處理函數(shù)
const?err?=?(error)?=>?{
??if?(error.response)?{
????const?data?=?error.response.data
????//?const?token?=?Vue.ls.get(ACCESS_TOKEN)
????if?(error.response.status?===?403)?{
????????Notify({?type:?'danger',?message:?data.message||data.msg?});
????}
????if?(error.response.status?===?401)?{
????????Notify({?type:?'danger',?message:?'你沒有權(quán)限。'?});
??????//?if?(token)?{
??????//???store.dispatch('Logout').then(()?=>?{
??????//?????setTimeout(()?=>?{
??????//???????window.location.reload()
??????//?????},?1500)
??????//???})
??????//?}
????}
??}
??return?Promise.reject(error)
}
//?request?interceptor(請求攔截器)
requests.interceptors.request.use(config?=>?{
//???const?token?=?Vue.ls.get(ACCESS_TOKEN)
??const?token?=?localStorage.getItem('token')
??if?(token)?{
????config.headers['token']?=?token?//?讓每個請求攜帶自定義?token?請根據(jù)實際情況自行修改
??}
??return?config
},?err)
//?response?interceptor(接收攔截器)
requests.interceptors.response.use((response)?=>?{
??const?res?=?response.data
??if?(res.code?!==?0&&res.code!==200)?{?
????Notify({?type:?'danger',?message:?res.message||res.msg?});
????//?401:未登錄;
????if?(res.code?===?401||res.code?===?403||res.code===999)?{
??????Notify({?type:?'danger',?message:?'請登錄'});
????}
????return?Promise.reject('error')
??}?else?{
????return?res
??}
},?err)
export?default?{
??requests
}main.js 引入,添加到vue原型
import requests from '@s/basejs/new-axios.js' // 記得改為你的路徑 Vue.prototype.rq = requests // 此處命名為rq,你可以改
使用
this.rq.get('/api/product/get?productChannelId='+this.productChannelId).then(res=>{
console.log(res)
})
// 傳對象參數(shù)
// get請求記得加params
this.rq.get('/api/product/get,{params:{name:'abc'}}).then(res=>{
console.log(res)
})
this.rq.post('/api/product/get,{name:'abc'}).then(res=>{
console.log(res)
})以下步驟一般不需要
開發(fā)環(huán)境如果要跨域,解決跨域問題(設(shè)置代理):vue-cli 3.0的在 package.json 同級目錄新建一個 vue.config.js 文件,加入下面代碼,其他版本找到配置文件的devServer加入代碼
:
module.exports = {
//axios域代理,解決axios跨域問題
baseUrl: '/',
devServer: {
proxy: {
'': {
target: 'http://192.168.0.108:8090',
changeOrigin: true,
ws: true,
pathRewrite: {
}
}
}
}
}修改完后記得重啟項目應(yīng)用配置
總結(jié)
到此這篇關(guān)于vue中使用axios最詳細(xì)教程的文章就介紹到這了,更多相關(guān)vue使用axios教程內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue3+elementplus 樹節(jié)點過濾功能實現(xiàn)
樹節(jié)點所展示的街道是讀取的成都市金牛區(qū)的范圍邊界線的json文件,街道下對應(yīng)內(nèi)容市通過fetch調(diào)用接口獲取的內(nèi)容,通過mapTreeData函數(shù)循環(huán)遍歷,對數(shù)據(jù)進(jìn)行處理,這篇文章主要介紹了vue3+elementplus 樹節(jié)點過濾功能實現(xiàn),需要的朋友可以參考下2024-05-05
vue3+webpack中npm發(fā)布組件的實現(xiàn)
本文主要介紹了vue3+webpack中npm發(fā)布組件的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-01-01
vue?this.$router.go(-1);返回時如何帶參數(shù)
這篇文章主要介紹了vue?this.$router.go(-1);返回時如何帶參數(shù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12
Vue-Access-Control 前端用戶權(quán)限控制解決方案
Vue-Access-Control是一套基于Vue/Vue-Router/axios 實現(xiàn)的前端用戶權(quán)限控制解決方案。這篇文章主要介紹了Vue-Access-Control:前端用戶權(quán)限控制解決方案,需要的朋友可以參考下2017-12-12
vue.js實現(xiàn)單選框、復(fù)選框和下拉框示例
本篇文章主要介紹了vue.js實現(xiàn)單選框、復(fù)選框和下拉框示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07
vue 解決uglifyjs-webpack-plugin打包出現(xiàn)報錯的問題
這篇文章主要介紹了vue 解決uglifyjs-webpack-plugin打包出現(xiàn)報錯的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08
elementPlus組件之表格編輯并校驗功能實現(xiàn)
本文詳細(xì)介紹了如何使用Element Plus組件實現(xiàn)表格的單條數(shù)據(jù)新增、編輯、刪除操作,并對數(shù)據(jù)進(jìn)行校驗,代碼簡單易懂,感興趣的朋友跟隨小編一起看看吧2024-12-12

