vue3學(xué)習(xí)筆記簡(jiǎn)單封裝axios示例實(shí)現(xiàn)
簡(jiǎn)介
axios是一個(gè)基于promise的網(wǎng)絡(luò)請(qǐng)求庫(kù),管理后臺(tái)使用的場(chǎng)景通常 獲取后端api數(shù)據(jù),然后交給頁(yè)面渲染
還是在前面的示例項(xiàng)目上操作,安裝axios最新0.27.2版本
cd HELLO-WORLD npm install axios
openapi
在網(wǎng)上找到一個(gè)開(kāi)放的openapi地址,免費(fèi)且無(wú)需認(rèn)證就可以使用
方便開(kāi)發(fā)時(shí)模擬接口數(shù)據(jù),但不能使用在生產(chǎn)環(huán)境中
該openapi返回json數(shù)據(jù),比較符合我們的需求, 這里直接寫死到axios配置中
基本配置
axios配置項(xiàng)較多,這里只配置基本功能
在src目錄下創(chuàng)建utils文件夾,然后創(chuàng)建request.js文件
import axios from 'axios' //自動(dòng)加在url前面 axios.defaults.baseURL = 'https://api.apiopen.top' //超時(shí)時(shí)間 axios.defaults.timeout = 5000 //跨域憑證 axios.defaults.withCredentials = false //響應(yīng)和請(qǐng)求 攔截器配置 export default axios
攔截器
axios攔截器分為 請(qǐng)求攔截和響應(yīng)攔截
請(qǐng)求攔截器可以在請(qǐng)求時(shí)設(shè)置token,header等等
響應(yīng)攔截器可以在收到數(shù)據(jù)后進(jìn)行邏輯判斷
請(qǐng)求攔截器配置
axios.interceptors.request.use(config => { console.log(config) return config }, error => { Promise.reject(error) })
響應(yīng)攔截器配置
axios.interceptors.response.use(res => { if (typeof res.data !== 'object') { ElMessage.error('返回?cái)?shù)據(jù)不是對(duì)象!') return Promise.reject(res) } if (res.data.code !== 200 ){ ElMessage.error('返回碼不等于200') } return res.data }, error => { ElMessage.error('網(wǎng)絡(luò)異常') Promise.reject(error) })
api請(qǐng)求
在src目錄創(chuàng)建api文件夾,在api目錄中創(chuàng)建openapi.js 文件
創(chuàng)建一個(gè)getImages方法來(lái) 獲取 openapi的圖片數(shù)據(jù)
該方法指定請(qǐng)求get方法,傳入url和參數(shù)
import request from '../utils/request' export function getImages(params) { return request.get('/api/getImages', { params }) }
數(shù)據(jù)渲染
在components目錄創(chuàng)建一個(gè)table.vue的組件,路由配置見(jiàn)前一章
引入openapi,因?yàn)槭莏s組件,不需要在vue頁(yè)面顯示聲明,直接使用
在頁(yè)面創(chuàng)建時(shí)調(diào)用請(qǐng)求數(shù)據(jù)方法,頁(yè)面加載完成既可在頁(yè)面上看到數(shù)據(jù)
<template> <div> <div> <p>this is imagesdata: {{ imagesData }}</p> </div> </div> </template> <script> import { getImages } from '@/api/openapi' export default { name: 'Table', data() { return { imagesData: null, queryData: { page: 0, size: 10, } } }, created() { this.fetchData(); }, methods: { fetchData() { getImages(this.queryData).then( (res) => { this.imagesData = res.result }).finally( () => { console.log(this.imagesData) }) } } } </script>
效果如下
結(jié)語(yǔ): 簡(jiǎn)單的axios封裝就完成了,以上就是vue3學(xué)習(xí)筆記簡(jiǎn)單封裝axios示例實(shí)現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于vue3封裝axios的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
vue3組合API中setup、 ref、reactive的使用大全
本文給大家介紹vue3組合API中setup、 ref、reactive的用法,初步了解reactive的使用及具體用法,通過(guò)示例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2021-06-06Vue3+Element+Ts實(shí)現(xiàn)表單的基礎(chǔ)搜索重置等功能
本文主要介紹了Vue3+Element+Ts實(shí)現(xiàn)表單的基礎(chǔ)搜索重置等功能,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12Vue實(shí)現(xiàn)網(wǎng)頁(yè)轉(zhuǎn)PDF方法流程詳解
在日常的工作中,有時(shí)候會(huì)碰到需要將某個(gè)網(wǎng)址網(wǎng)頁(yè)保存成為pdf的情況,這篇文章主要介紹了用Vue實(shí)現(xiàn)網(wǎng)頁(yè)轉(zhuǎn)PDF的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08Vue-Router基礎(chǔ)學(xué)習(xí)筆記(小結(jié))
這篇文章主要介紹了Vue-Router基礎(chǔ)學(xué)習(xí)筆記(小結(jié)),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-10-10elementUI+Springboot實(shí)現(xiàn)導(dǎo)出excel功能的全過(guò)程
這篇文章主要介紹了elementUI+Springboot實(shí)現(xiàn)導(dǎo)出excel功能,現(xiàn)在也對(duì)這個(gè)導(dǎo)出功能進(jìn)行一個(gè)匯總整理寫出來(lái),結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-09-09