亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

Vue封裝Axios請求和攔截器的步驟

瀏覽:3日期:2022-11-22 11:10:17

PS:本文代碼在vue-cli3構建的基礎vue項目之上進行編寫:vue create my-project

axios 是一個基于 promise 的 http 庫,可以用在瀏覽器和 node.js 中, 也是vue官方推薦使用的http庫。

axios很好用,其中之一就是它的攔截器十分強大,我們可以為請求和響應設置攔截器,比如請求攔截器可以在每個請求里加上token,做了統一處理后維護起來也方便,響應攔截器可以在接收到響應后先做一層操作,如根據狀態碼判斷登錄狀態、授權。

之前初學的時候,經常將axios數據請求寫在各組件方法內,但實踐證明,如果項目接口變動要修改url地址等參數會比較為麻煩,不易維護,于是需要對axios進行封裝并將接口統一管理。

當然在最之前,我們需要安裝axios,使用命令 npm install axios --save 即可。

一、新建函數文件

在 src目錄 下新建一個 axios目錄,然后在里面創建 axios-request.js 和 axios-api.js 兩個文件,其中 aixos-request.js 用于對axios進行封裝,axios-api.js 用于接口的統一管理。

二、對axios進行封裝

axios-request.js代碼如下:

import axios from 'axios';import { Message } from 'element-ui';// 創建一個axios實例const axiosService = axios.create({ baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url timeout: 5000 // 設置超時時間為5s});// request攔截器 ==> 對請求參數進行處理axiosService.interceptors.request.use( config => { // 可以在發送請求之前做些事情 // 比如請求參數的處理、在headers中攜帶token等等 return config; }, error => { // 處理請求錯誤 console.log(error); // for debug Promise.reject(error); });// respone攔截器 ==> 對響應做處理axiosService.interceptors.response.use( response => { const res = response.data; // 如果自定義的返回碼不等于200, 就返回一個錯誤 if (res.code !== 200) { return Promise.reject(new Error(res.message || 'Error')) } else { return res; } }, error => { // 判斷error的status代碼,并將對應的信息告知用戶 let text = ''; let err = JSON.parse(JSON.stringify(error)); if (err.response.status) { switch (error.response.status) { case 400: text = '請求錯誤(400),請重新申請'; break; case 401: text = '登錄錯誤(401),請重新登錄'; return this.$router.replace('/login'); case 403: text = '拒絕訪問(403)'; break; case 404: text = '請求出錯(404)'; break; case 408: text = '請求超時(408)'; break; case 500: text = '服務器錯誤(500),請重啟軟件或切換功能頁!'; break; case 501: text = '服務未實現(501)'; break; case 502: text = '網絡錯誤(502)'; break; case 503: text = '服務不可用(503)'; break; case 504: text = '網絡超時(504)'; break; case 505: text = 'HTTP版本不受支持(505)'; break; default: text = '網絡連接出錯'; } } else { text = '連接服務器失敗,請退出重試!'; } Message({ showClose: true, message: text, type: 'error' }); return Promise.reject(error); });// 將寫好的axios實例暴露出去export default axiosService;

三、對接口進行統一管理

axios-api.js代碼如下:

import axiosService from './axios-request'; // 從axios-request.js內引入axiosService// 下面是POST形式export const userLogin = data => { return axiosService({ url: '/xxxx/user/xxxx', // 根據實際接口地址來寫 method: 'post', data });};// 下面是GET形式export const userInfo = params => { return axiosService({ url: '/xxxx/user/xxxx', // 根據實際接口地址來寫 method: 'get', params });};

這里要注意下,post參數放在data內,get參數放在params內!

四、在組件內使用寫好的接口

在組件中使用:

下面是模擬的一個登錄接口,代碼不太嚴謹,僅演示大致用法:

<script>import {userLogin} from '@/axios/axios-api'; // 引入登錄接口函數export default { name: 'login', components: {}, methods: { async login() { let username = this.username; let password = this.password; let params = { username: username, password: password }; if (!username || !password) { alert('賬號或密碼不能為空'); } else { if (username.length < 51 && password.length < 51) { let res = await userLogin(params); console.log(res); } else { alert('賬號或密碼輸入字符不能超過50位'); } } } }};</script>

上面的代碼中我們用了 async await,是ES7新出的特性,具體用法可以Google或者到MDN上查看。

五、總結

當然也可以不將接口統一管理,而只用axios封裝,然后在組件內寫異步請求函數。以上是個人在之前學習的時候,所用的封裝方式,如有錯誤之處歡迎留言指正。

以上就是Vue封裝Axios請求和攔截器的步驟的詳細內容,更多關于Vue封裝的資料請關注好吧啦網其它相關文章!

標簽: IOS
相關文章:
主站蜘蛛池模板: 特级女人十八毛片a级 | 黄色国产一级片 | 国产精品国产三级在线专区 | 日本一级特黄在线播放 | 久久综合九色综合精品 | 国产精品久久成人影院 | 激情影院成人区免费观看视频 | 国产综合亚洲欧美日韩一区二区 | 加勒比一本一道在线 | 日本黄色小视频在线观看 | 热门国产xvideos中文 | 小泽玛利亚一区二区在线看 | 国产午夜精品久久久久小说 | 欧美日韩乱码毛片免费观看 | fc2成年免费共享视频网站 | 日操夜操天天操 | 国产精品爽黄69天堂a | 一道精品一区二区三区 | 91好色视频 | 99久久国产综合精品2020 | 久久国产精品影院 | 欧美特黄视频在线观看 | 香蕉视频99 | 香港三级欧美国产精品 | 国产美女一区二区在线观看 | 亚洲国产人成中文幕一级二级 | 日本香蕉一区二区在线观看 | 蝌蚪91视频 | 国产99热久久这里有精品999 | 香蕉97超级碰碰碰免费公 | 亚洲欧美日韩激情在线观看 | 亚洲精品一区二区中文 | 91啦中文成人 | yy9299| 亚洲欧美在线播放 | 成人看片在线观看 | 亚洲三级黄色片 | 青青草青青操 | 国产精品所毛片视频 | 欧美精品综合一区二区三区 | 毛片毛片毛片毛片毛片毛片毛片 |