vue3學習筆記簡單封裝axios示例實現
簡介
axios是一個基於promise的網絡請求庫,管理後臺使用的場景通常 獲取後端api數據,然後交給頁面渲染
還是在前面的示例項目上操作,安裝axios最新0.27.2版本
cd HELLO-WORLD npm install axios
openapi
在網上找到一個開放的openapi地址,免費且無需認證就可以使用
方便開發時模擬接口數據,但不能使用在生產環境中
該openapi返回json數據,比較符合我們的需求, 這裡直接寫死到axios配置中
基本配置
axios配置項較多,這裡隻配置基本功能
在src目錄下創建utils文件夾,然後創建request.js文件
import axios from 'axios' //自動加在url前面 axios.defaults.baseURL = 'https://api.apiopen.top' //超時時間 axios.defaults.timeout = 5000 //跨域憑證 axios.defaults.withCredentials = false //響應和請求 攔截器配置 export default axios
攔截器
axios攔截器分為 請求攔截和響應攔截
請求攔截器可以在請求時設置token,header等等
響應攔截器可以在收到數據後進行邏輯判斷
請求攔截器配置
axios.interceptors.request.use(config => { console.log(config) return config }, error => { Promise.reject(error) })
響應攔截器配置
axios.interceptors.response.use(res => { if (typeof res.data !== 'object') { ElMessage.error('返回數據不是對象!') return Promise.reject(res) } if (res.data.code !== 200 ){ ElMessage.error('返回碼不等於200') } return res.data }, error => { ElMessage.error('網絡異常') Promise.reject(error) })
api請求
在src目錄創建api文件夾,在api目錄中創建openapi.js 文件
創建一個getImages方法來 獲取 openapi的圖片數據
該方法指定請求get方法,傳入url和參數
import request from '../utils/request' export function getImages(params) { return request.get('/api/getImages', { params }) }
數據渲染
在components目錄創建一個table.vue的組件,路由配置見前一章
引入openapi,因為是js組件,不需要在vue頁面顯示聲明,直接使用
在頁面創建時調用請求數據方法,頁面加載完成既可在頁面上看到數據
<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>
效果如下
結語: 簡單的axios封裝就完成瞭,以上就是vue3學習筆記簡單封裝axios示例實現的詳細內容,更多關於vue3封裝axios的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- vue中如何簡單封裝axios淺析
- 如何用vue封裝axios請求
- vue中封裝axios並實現api接口的統一管理
- vue項目中如何使用mock你知道嗎
- 解決axios:"timeout of 5000ms exceeded"超時的問題