vue項(xiàng)目使用axios封裝request請(qǐng)求的過程
一、封裝axios
1.src 目錄中新建utils文件夾
2.utils文件中建立request.js文件
request.js文件的內(nèi)容
<1> 導(dǎo)入axios
<2> 我們可以聲明一個(gè)新的常量axios 我們可以配置一些基礎(chǔ) 公共的路徑配置 比如說baseURL timeout請(qǐng)求失敗超時(shí)報(bào)錯(cuò) withcookies…之類的東西
<3> 設(shè)置請(qǐng)求攔截
新的常量axios service.攔截器.請(qǐng)求.使用===》 里頭有兩個(gè)參數(shù) 一個(gè)成功的回調(diào)函數(shù) 一個(gè)失敗的回調(diào)函數(shù)
<4> 設(shè)置響應(yīng)攔截
<5> 導(dǎo)出 導(dǎo)出這個(gè)模塊
完整代碼:
import axios from 'axios' import { Notification } from 'element-ui' // 創(chuàng)建axios實(shí)例 const service = axios.create({ // baseURL: 'http://192.168.1.69:5000', baseURL: process.env.API_ROOT, timeout: 80000, // 請(qǐng)求超時(shí)時(shí)間 withCredentials: true, // crossDomain: true }) // request攔截器 service.interceptors.request.use( config => { if (getToken()) { config.headers['Authorization'] = getToken() // 讓每個(gè)請(qǐng)求攜帶自定義token 請(qǐng)根據(jù)實(shí)際情況自行修改 } var lang = localStorage.getItem('lang')//因?yàn)轫?xiàng)目中使用到了i18n國(guó)際化語言配置,請(qǐng)根據(jù)實(shí)際情況自行修改 if (!lang) { lang = 'zh_CN' } config.headers['Accept-Language'] = lang.replace(/_/g, '-') config.headers['Content-Type'] = 'application/json' return config }, error => { Promise.reject(error) } ) // response 攔截器 service.interceptors.response.use( response => { return response.data }, error => { // 兼容blob下載出錯(cuò)json提示 if (error.response.data instanceof Blob && error.response.data.type.toLowerCase().indexOf('json') !== -1) { const reader = new FileReader() reader.readAsText(error.response.data, 'utf-8') reader.onload = function (e) { const errorMsg = JSON.parse(reader.result).message Notification.error({ title: errorMsg, duration: 5000 }) } } else { let code = 0 try { code = error.response.data.status } catch (e) { if (error.toString().indexOf('Error: timeout') !== -1) { Notification.error({ title: '網(wǎng)絡(luò)請(qǐng)求超時(shí)', duration: 5000 }) return Promise.reject(error) } } if (code) { if (code === 401) { store.dispatch('LogOut').then(() => { // 用戶登錄界面提示 Cookies.set('point', 401) location.reload() }) } else if (code === 403) { router.push({ path: '/401' }) } else { const errorMsg = error.response.data.message if (errorMsg !== undefined) { Notification.error({ title: errorMsg, duration: 0 }) } } } else { Notification.error({ title: '接口請(qǐng)求失敗', duration: 5000 }) } } return Promise.reject(error) } ) export default service
二、封裝api 函數(shù)
1.先導(dǎo)入封裝好的新的axios
2.然后我們可以封裝一些接口函數(shù) 比如說 登錄的 注冊(cè)的 首頁的 分類的 輪播的 //但是要確認(rèn)參數(shù)傳的是get還是post請(qǐng)求
tips://比如說以后我們要維護(hù)封裝好的接口 這樣封裝好后我們就不需要去組件里一個(gè)一個(gè)去找,直接來這個(gè)文件修改即可
//組件化開模塊化發(fā)或者開發(fā) 它們都有一個(gè)原則
//高聚合 低耦合
//高聚合就是 一個(gè)組件的業(yè)務(wù)一定要聚合在一起 一個(gè)組件的業(yè)務(wù)越集中越好
//低耦合就是 組件和組件之間的耦合度一定要低 意思就是兩個(gè)組件之間的牽連越少越好
三、頁面中使用
<script>標(biāo)簽中引入 import { getSetbrate,randomtest,autocalibrate,lightCheck,writeserial} from "@/api/mAdmin";
方法中調(diào)用
// 設(shè)置閾值 獲取閾值 onManualSend() { let data = { command: this.command, }; writeserial(data).then((res) => { this.manualText = res.msg; }); },
到此這篇關(guān)于vue項(xiàng)目 使用axios封裝request請(qǐng)求的文章就介紹到這了,更多相關(guān)vue axios封裝request請(qǐng)求內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue+ElementUi實(shí)現(xiàn)點(diǎn)擊表格中鏈接進(jìn)行頁面跳轉(zhuǎn)與路由詳解
在vue中進(jìn)行前端網(wǎng)頁開發(fā)時(shí),通常列表數(shù)據(jù)用el-table展示,下面這篇文章主要給大家介紹了關(guān)于Vue+ElementUi實(shí)現(xiàn)點(diǎn)擊表格中鏈接進(jìn)行頁面跳轉(zhuǎn)與路由的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02Vue運(yùn)用transition實(shí)現(xiàn)過渡動(dòng)畫
vue的過渡動(dòng)畫,主要是transition標(biāo)簽的使用,配合css動(dòng)畫實(shí)現(xiàn)的。接下來通過本文給大家分享Vue運(yùn)用transition實(shí)現(xiàn)過渡動(dòng)畫效果,感興趣的朋友一起看看吧2019-05-05vue基礎(chǔ)之事件簡(jiǎn)寫、事件對(duì)象、冒泡、默認(rèn)行為、鍵盤事件實(shí)例分析
這篇文章主要介紹了vue基礎(chǔ)之事件簡(jiǎn)寫、事件對(duì)象、冒泡、默認(rèn)行為、鍵盤事件,結(jié)合實(shí)例形式分析了vue.js事件簡(jiǎn)寫、冒泡及阻止冒泡等相關(guān)操作技巧,需要的朋友可以參考下2019-03-03vue3中獲取dom元素和操作實(shí)現(xiàn)方法
ref是Vue3中一個(gè)非常重要的功能,它可以用來獲取DOM節(jié)點(diǎn),從而實(shí)現(xiàn)對(duì)DOM節(jié)點(diǎn)的操作,下面這篇文章主要給大家介紹了關(guān)于vue3中獲取dom元素和操作實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下2023-06-06vscode中vue代碼提示與補(bǔ)全沒反應(yīng)解決(vetur問題)
這篇文章主要給大家介紹了關(guān)于vscode中vue代碼提示與補(bǔ)全沒反應(yīng)解決(vetur問題)的相關(guān)資料,文中通過圖文將解決的方法介紹的非常詳細(xì),需要的朋友可以參考下2023-03-03