// axios封装示例代码
// 引入axios
import axios from 'axios';
// 创建axios实例
const service = axios.create({
// 设置默认请求头
headers: { 'Content-Type': 'application/json' },
// 设置超时时间
timeout: 5000,
// 可以设置基础url,方便后续接口调用
baseURL: process.env.VUE_APP_BASE_API
});
// 请求拦截器
service.interceptors.request.use(
config => {
// 在发送请求之前做些什么
// 比如可以在每次请求时添加token
const token = localStorage.getItem('token');
if (token) {
config.headers['Authorization'] = `Bearer ${token}`;
}
return config;
},
error => {
// 对请求错误做些什么
return Promise.reject(error);
}
);
// 响应拦截器
service.interceptors.response.use(
response => {
// 对响应数据做点什么
const res = response.data;
// 如果返回的状态码不是200,说明接口请求有问题,可以统一处理
if (res.code !== 200) {
Message({
message: res.message || 'Error',
type: 'error',
duration: 5 * 1000
});
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);
}
);
// 封装get请求
export function get(url, params = {}) {
return new Promise((resolve, reject) => {
service.get(url, { params })
.then(response => {
resolve(response);
})
.catch(error => {
reject(error);
});
});
}
// 封装post请求
export function post(url, data = {}) {
return new Promise((resolve, reject) => {
service.post(url, data)
.then(response => {
resolve(response);
})
.catch(error => {
reject(error);
});
});
}
axios.create
方法创建了一个自定义的axios实例,并设置了默认配置,例如超时时间和基础URL。这样封装后,可以直接在项目中导入这些方法来发起HTTP请求,而不需要每次都重复编写相同的代码。
上一篇:vue配置跨域
下一篇:vue eventsource
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站