安裝Axios

1. 安裝:

npm install axios

2. 封裝工具文件(src/utils/http.js):

import axios from 'axios'

// 創(chuàng)建實例并配置基礎(chǔ)路徑、超時時間
const http = axios.create({
  baseURL: import.meta.env.VITE_API_BASE_URL, // 從環(huán)境變量讀?。ㄍ扑])
  timeout: 10000
})

// 請求攔截器:添加 token、設(shè)置 headers 等
http.interceptors.request.use(config => {
  const token = localStorage.getItem('token')
  if (token) config.headers.Authorization = `Bearer ${token}`
  return config
}, error => Promise.reject(error))

// 響應攔截器:統(tǒng)一處理錯誤、剝離響應數(shù)據(jù)等
http.interceptors.response.use(res => res.data, error => {
  // 統(tǒng)一錯誤提示(可結(jié)合 UI 庫如 Vant 的 Toast)
  console.error('請求失?。?, error.message)
  return Promise.reject(error)
})

export default http

3. 全局注冊(在 main.js 中,替代 Vue 2 的 Vue.prototype):

import { createApp } from 'vue'
import App from './TestA.vue'
import http from './utils/http' // 導入封裝的 axios 實例

const app = createApp(App)
app.config.globalProperties.$http = http // 注冊為全局屬性
app.mount('#app')

# 4. 組件中使用(<script setup>):
<script setup>
import { getCurrentInstance } from 'vue'

const { proxy } = getCurrentInstance() // 獲取全局屬性代理

// 發(fā)起請求
const fetchData = async () => {
  try {
    const res = await proxy.$http.get('/api/data')
    console.log('請求結(jié)果:', res)
  } catch (err) {
    console.error('請求失?。?, err)
  }
}
</script>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容