写一个完整的axios接口封装
时间: 2023-12-09 13:26:31 浏览: 61
好的,以下是一个基本的axios接口封装:
```js
import axios from 'axios';
const instance = axios.create({
baseURL: 'http://localhost:3000',
timeout: 5000,
});
instance.interceptors.request.use(
(config) => {
const token = localStorage.getItem('token');
if (token) {
config.headers.Authorization = `Bearer ${token}`;
}
return config;
},
(error) => {
return Promise.reject(error);
}
);
instance.interceptors.response.use(
(response) => {
return response.data;
},
(error) => {
if (error.response) {
switch (error.response.status) {
case 401:
console.log('未登录');
break;
case 403:
console.log('没有权限');
break;
case 404:
console.log('请求资源不存在');
break;
default:
console.log(`请求错误,错误码:${error.response.status}`);
}
} else {
console.log('请求失败');
}
return Promise.reject(error);
}
);
export default {
get(url, params) {
return instance.get(url, { params });
},
post(url, data) {
return instance.post(url, data);
},
put(url, data) {
return instance.put(url, data);
},
delete(url) {
return instance.delete(url);
},
};
```
这个封装包含了:
1. 创建了一个axios实例,设置了基础URL和超时时间;
2. 设置了请求拦截器,用于添加请求头部信息;
3. 设置了响应拦截器,用于处理响应错误;
4. 封装了get、post、put、delete四个方法,方便调用。
使用时,只需要导入这个封装并调用对应的方法即可:
```js
import http from './http';
http.get('/users').then((res) => {
console.log(res);
});
http.post('/login', { username: 'admin', password: '123456' }).then((res) => {
console.log(res);
});
```
阅读全文