VUE的request封裝是一個非常重要的知識點。它是為了方便我們在開發VUE項目時,更加方便地處理請求數據而設計的。當我們開發一個VUE項目時,經常需要使用到網絡請求。而網絡請求是一個比較麻煩的操作。我們需要設置請求的參數、請求的URL、請求的方法等等。并且每個請求的返回結果也有可能不一樣。所以為了方便開發,在VUE中我們可以使用request封裝來統一處理網絡請求相關的操作。
request封裝有以下幾個特點:
- 請求和響應的格式是統一的,方便統一處理返回結果以及錯誤處理。
- 提供攔截器,在請求和響應階段可以對數據進行攔截,方便做一些統一處理。
- 可以配置 baseURL、timeout 等參數,方便全局配置請求參數。
- 支持在請求頭中添加 token,做全局身份驗證。
下面是一個request封裝的示例代碼:
import axios from 'axios' const service = axios.create({ baseURL: process.env.BASE_API, timeout: 5000, // 請求超時時間 headers: { 'Content-Type': 'application/json;charset=UTF-8' } }) // 請求攔截器 service.interceptors.request.use(config =>{ // 在請求發送之前,將token添加到請求頭中 if (localStorage.token) { config.headers.Authorization = 'Bearer ' + localStorage.token } return config }, error =>{ Promise.reject(error) }) // 響應攔截器 service.interceptors.response.use( response =>{ const res = response.data if (res.code !== 200) { // 如果返回結果中的code不等于200,那么就拋出錯誤 return Promise.reject(new Error(res.message || 'Error')) } else { return res.data } }, error =>{ return Promise.reject(error) } ) export default service
上面的代碼中,我們首先使用 axios.create() 創建了一個實例。這個實例可以用來進行網絡請求。
然后在請求攔截器中,我們添加了一個判斷。如果 localStorage 中有 token,則將 token 添加到請求頭中。這樣在所有的請求中都會帶上 token,做到全局身份驗證。
接著在響應攔截器中,我們對返回結果進行判斷,如果返回結果中的 code 不等于 200,那么就拋出錯誤。否則就返回 data。
在使用 request 封裝進行網絡請求時,我們只需要使用上面的示例代碼即可。每次發送請求時,都會先執行請求攔截器中的代碼,然后再發送請求。當服務器響應時,會執行響應攔截器中的代碼。這樣就可以方便地統一處理請求和響應的操作了。