100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > axios拦截器的使用

axios拦截器的使用

时间:2021-05-23 02:02:55

相关推荐

axios拦截器的使用

通过create创建了一个新的axios实例

// 创建了一个新的axios实例const service = axios.create({baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url// withCredentials: true, // send cookies when cross-domain requeststimeout: 5000 // 超时时间})

请求拦截器:请求拦截器主要处理 token的统一注入问题

// axios的请求拦截器

service.interceptors.request.use(

config => {

// do something before request is sent

if (store.getters.token) {

// let each request carry token

// ['X-Token'] is a custom headers key

// please modify it according to the actual situation

config.headers['X-Token'] = getToken()

}

return config

},

error => {

// do something with request error

console.log(error) // for debug

return Promise.reject(error)

}

)

响应拦截器:响应拦截器主要处理 返回的**`数据异常`** 和**`数据结构`**问题

// 响应拦截器

service.interceptors.response.use(

response => {

const res = response.data

// if the custom code is not 20000, it is judged as an error.

if (res.code !== 20000) {

Message({

message: res.message || 'Error',

type: 'error',

duration: 5 * 1000

})

if (res.code === 50008 || res.code === 50012 || res.code === 50014) {

// to re-login

MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {

confirmButtonText: 'Re-Login',

cancelButtonText: 'Cancel',

type: 'warning'

}).then(() => {

store.dispatch('user/resetToken').then(() => {

location.reload()

})

})

}

return Promise.reject(new Error(res.message || 'Error'))

} else {

return res

}

},

error => {

console.log('err' + error) // for debug

Message({

message: error.message,

type: 'error',

duration: 5 * 1000

})

return Promise.reject(error)

}

)

大概使用流程:

// 导出一个axios的实例 而且这个实例要有请求拦截器 响应拦截器

import axios from 'axios'

const service = axios.create() // 创建一个axios的实例

service.interceptors.request.use() // 请求拦截器

service.interceptors.response.use() // 响应拦截器

export default service // 导出axios实例

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。