Vue 中的 Ajax 庫是 axios,它是一個基于 Promise 的 HTTP 庫,可用于瀏覽器和 node.js 中。為了更好的使用方便,我們可以對 axios 進行封裝并在 Vue 項目中使用。這篇文章將會詳細介紹如何在 Vue 中對 axios 進行封裝。
首先,我們需要安裝 axios。通過 npm 安裝:
npm install axios --save
然后,在項目中創建一個叫做 api.js 的文件來封裝 axios。
import axios from 'axios' // 創建 axios 實例 const service = axios.create({ baseURL: process.env.VUE_APP_BASE_API, // api 的 base_url timeout: 5000 // 請求超時時間 }) // request 攔截器 service.interceptors.request.use( config =>{ // 在請求發送之前可以在這里添加一些操作,例如添加 token 等 return config }, error =>{ // 請求錯誤的操作 return Promise.reject(error) } ) // response 攔截器 service.interceptors.response.use( response =>{ // code:200 業務處理正常,返回數據 // code:401 token過期/未登錄 // code:502 后端服務異常 const res = response.data if (res.code !== 200) { // 如果接口返回的狀態碼不是200,則拋出異常 return Promise.reject(res.message || 'Error') } else { return res } }, error =>{ // 對響應錯誤進行操作 return Promise.reject(error) } ) export default service
axios 實例的方法可以查看 axios 官方文檔。其中,baseURL 和 timeout 是在 axios 創建實例時進行設置的。request 攔截器用于在請求發送之前添加一些操作,例如 token 添加等。response 攔截器用于對響應的錯誤進行統一處理,例如處理響應錯誤狀態碼。
之后,在 Vue 項目中使用:
import request from '@/utils/api.js' request({ url: '/user/info', method: 'get' }).then(response =>{ console.log(response) }).catch(error =>{ console.log(error) })
以上代碼中,我們引入了在 api.js 中封裝好的 axios 實例,通過調用該實例方法來發起請求。
最后,需要注意的是,在使用 axios 時需要注意跨域問題。在開發環境下需要配置 webpack 代理配置,生產環境下可以在服務器端配置。