Vue是一個(gè)流行的JavaScript框架,而Axios是一個(gè)用于發(fā)送HTTP請(qǐng)求的JavaScript庫(kù)。Vue和Axios的結(jié)合使用可以幫助我們更加方便地管理數(shù)據(jù),但要確保數(shù)據(jù)的安全性,需要使用Axios的攔截器功能。
攔截器可以在HTTP請(qǐng)求和響應(yīng)的過程中,添加、修改或刪除請(qǐng)求或響應(yīng)的頭信息以及行為。在Vue中使用Axios攔截器時(shí),需要定義一個(gè)Axios實(shí)例。
import axios from 'axios'
const instance = axios.create({
baseURL: 'https://www.example.com/api/',
timeout: 1000,
headers: {'X-Custom-Header': 'foobar'}
})
以上代碼創(chuàng)建了一個(gè)名為instance的Axios實(shí)例,并指定了基本URL、超時(shí)時(shí)間和頭信息。現(xiàn)在可以在Axios實(shí)例上使用攔截器了。
instance.interceptors.request.use(config =>{
if (localStorage.getItem('token')) {
config.headers.Authorization = `Bearer ${localStorage.getItem('token')}`
}
return config
}, error =>{
return Promise.reject(error)
})
instance.interceptors.response.use(response =>{
return response
}, error =>{
if (error.response.status === 401) {
window.location.href = '/login'
return Promise.reject(error)
}
return Promise.reject(error)
})
以上代碼定義了兩個(gè)攔截器:一個(gè)是請(qǐng)求攔截器,用于添加Authorization頭信息,另一個(gè)是響應(yīng)攔截器,用于處理401未授權(quán)錯(cuò)誤。如果沒有登錄信息,在請(qǐng)求的頭信息中將不會(huì)有Authorization頭信息。
在Vue組件中,我們可以使用這個(gè)Axios實(shí)例來發(fā)送HTTP請(qǐng)求,并在需要時(shí)使用攔截器。
export default {
data () {
return {
users: []
}
},
created () {
instance.get('/users').then(response =>{
this.users = response.data
}).catch(error =>{
console.error(error)
})
}
}
以上代碼發(fā)送了一個(gè)GET請(qǐng)求,獲取所有用戶信息。網(wǎng)絡(luò)請(qǐng)求如果發(fā)生錯(cuò)誤,將會(huì)在控制臺(tái)顯示。
使用Axios攔截器可以提高開發(fā)效率,并確保數(shù)據(jù)的安全性。可以根據(jù)具體需求對(duì)攔截器進(jìn)行定義和修改。在Vue中使用Axios攔截器,需要定義Axios實(shí)例和攔截器,并在需要時(shí)進(jìn)行調(diào)用。