项目中使用 axios 发送 HTTP 请求时,可以将其进行封装以方便使用和统一管理。以下是一个示例的 axios 封装方法:
import axios from 'axios';
// 创建 axios 实例
const service = axios.create({
baseURL: process.env.VUE_APP_BASE_API, // 配置请求根路径,这里使用 .env 文件管理环境变量
timeout: 5000 // 请求超时时间
});
// 请求拦截器
service.interceptors.request.use(
config => {
// 在发送请求之前做些什么,比如添加 token、设置 Content-Type 等
config.headers['Content-Type'] = 'application/json';
return config;
},
error => {
// 处理请求错误
console.error(error);
return Promise.reject(error);
}
);
// 响应拦截器
service.interceptors.response.use(
response => {
// 对响应数据做些什么,比如处理错误码、解析数据等
const res = response.data;
if (res.code !== 200) {
console.error(res.message || '请求失败');
return Promise.reject(new Error(res.message || '请求失败'));
} else {
return res.data;
}
},
error => {
// 处理响应错误
console.error(error);
return Promise.reject(error);
}
);
// GET 请求
export function get(url, params) {
return service.get(url, { params });
}
// POST 请求
export function post(url, data) {
return service.post(url, JSON.stringify(data));
}
这里对 axios 进行了如下封装:
- 配置了基本的请求根路径和超时时间,并创建了一个 axios 实例
service
。 - 定义了请求拦截器和响应拦截器,用于在每个请求前加上一些通用的配置或对响应数据进行处理。
- 将 GET 和 POST 请求分别封装成
get
和post
函数,以方便使用。