axios的request封装
时间: 2023-08-20 14:05:41 浏览: 103
axios的request方法已经在引用中进行了封装。在该封装中,使用了axios.create方法创建了一个axios实例,并在该实例上添加了请求拦截器和响应拦截器。请求拦截器在发送请求之前对配置进行了处理,而响应拦截器则对响应数据进行了处理。此外,还可以根据需要在拦截器中添加其他自定义逻辑。在封装完成后,可以通过export default将该实例导出供其他文件使用。<em>1</em><em>2</em><em>3</em>
#### 引用[.reference_title]
- *1* *2* *3* [如何进行axios和request封装](https://blog.csdn.net/weixin_49021391/article/details/128151885)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item]
[ .reference_list ]
相关问题
nuxt axios request 请求封装
在Nuxt中,可以通过在nuxt.config.js中配置axios来对axios请求进行封装。首先,确保已经安装了@nuxtjs/axios和@nuxtjs/proxy两个模块。后,在nuxt.config.js中进行如下配置:
```javascript
export default {
modules: [
'@nuxtjs/axios',
'@nuxtjs/proxy'
],
axios: {
proxy: true
},
proxy: {
'/api': {
changeOrigin: true,
target: 'http://XXX.XXX.X.X',
pathRewrite: { '^/api': '' }
}
}
}
```
这样就完成了对axios请求的封装。其中,`changeOrigin`设置为true可以允许跨域,`target`指定了允许跨域的服务器地址,`pathRewrite`用于重写请求路径。
axios封装request
以下是一个常用的axios封装request的示例代码,其中包括了请求头、状态码、请求超时时间、请求方式、请求拦截器和响应拦截器等的封装:
```javascript
import axios from 'axios'
import { Message } from 'element-ui'
// 创建axios实例
const service = axios.create({
baseURL: process.env.BASE_API, // api的base_url
timeout: 5000 // 请求超时时间
})
// request拦截器
service.interceptors.request.use(config => {
// 在发送请求之前做些什么
config.headers['X-Token'] = 'token'
return config
}, error => {
// 对请求错误做些什么
console.log(error) // for debug
Promise.reject(error)
})
// respone拦截器
service.interceptors.response.use(
response => {
/**
* code为非20000是抛错 可结合自己业务进行修改
*/
const res = response.data
if (res.code !== 20000) {
Message({
message: res.message,
type: 'error',
duration: 5 * 1000
})
// 50008:非法的token; 50012:其他客户端登录了; 50014:Token 过期了;
if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
// 请自行在引入 MessageBox
// import { Message, MessageBox } from 'element-ui'
MessageBox.confirm('你已被登出,可以取消继续留在该页面,或者重新登录', '确定登出', {
confirmButtonText: '重新登录',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
store.dispatch('FedLogOut').then(() => {
location.reload()// 为了重新实例化vue-router对象 避免bug
})
})
}
return Promise.reject('error')
} else {
return response.data
}
},
error => {
console.log('err' + error)// for debug
Message({
message: error.message,
type: 'error',
duration: 5 * 1000
})
return Promise.reject(error)
}
)
export default service
```
阅读全文