request axios封装
时间: 2023-11-04 11:58:51 浏览: 39
在使用Vue或React的项目中封装axios可以通过以下步骤实现:
1. 首先,在项目中安装axios。可以使用CDN的线上地址引入axios,也可以使用npm进行安装。
2. 在main.js或其他主文件中引入axios,并将其挂载到Vue或React实例中,以便在整个项目中都可以使用axios。
3. 在项目中创建一个axios.js文件,用于封装axios的配置和拦截器。
4. 在axios.js文件中,使用axios.create()方法创建一个实例,可以自定义配置,如域名、超时时间、请求头等。
5. 在实例中添加请求拦截器和响应拦截器,用于在发送请求和接收响应时进行一些操作,如对请求数据进行处理、对错误进行处理等。
6. 导出axios实例,以便在其他文件中可以直接使用封装好的axios。
以上是封装axios的一般步骤,具体的代码实现可以参考引用中提供的示例代码。
相关问题
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
```
request 封装的axios
在微信小程序中,可以通过封装一个request方法来实现类似axios的功能。以下是一个封装的示例代码:
```javascript
// 引入wx.request方法
const request = (config) => {
return new Promise((resolve, reject) => {
wx.request({
url: config.url,
method: config.method || 'GET',
data: config.data || {},
header: config.header || {},
success: (res) => {
// 对响应数据做处理
if (res.statusCode === 200) {
resolve(res.data);
} else {
console.error("请求错误");
console.error(res);
reject(res.data);
}
},
fail: (error) => {
reject(error);
}
});
});
};
export default request;
```
你可以将以上代码保存到一个名为request.js的文件中,并在需要的地方引入使用。在需要发送请求的地方,可以通过调用request方法,并传入相应的配置参数来发送请求。
```javascript
import request from 'request.js';
request({
url: 'http://api.example.com/data',
method: 'GET',
data: { key: 'value' },
header: { 'Content-Type': 'application/json' }
}).then((response) => {
// 对响应数据进行处理
}).catch((error) => {
// 对错误进行处理
});
```
通过以上方式,你可以在微信小程序中封装一个类似axios的请求方法,实现请求的拦截和响应的处理。