添加API服务模块
- 实现后端接口调用封装
This commit is contained in:
parent
7707522c08
commit
2e3eab5fed
106
src/services/api.js
Normal file
106
src/services/api.js
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
/**
|
||||||
|
* API服务类
|
||||||
|
* 处理与后端的所有HTTP通信
|
||||||
|
*/
|
||||||
|
import axios from 'axios';
|
||||||
|
|
||||||
|
// 创建axios实例
|
||||||
|
const api = axios.create({
|
||||||
|
baseURL: 'http://localhost:5177/api',
|
||||||
|
timeout: 300000, // 5分钟超时
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
// 请求拦截器
|
||||||
|
api.interceptors.request.use(
|
||||||
|
(config) => {
|
||||||
|
console.log('发送请求:', config.method.toUpperCase(), config.url);
|
||||||
|
return config;
|
||||||
|
},
|
||||||
|
(error) => {
|
||||||
|
console.error('请求错误:', error);
|
||||||
|
return Promise.reject(error);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
// 响应拦截器
|
||||||
|
api.interceptors.response.use(
|
||||||
|
(response) => {
|
||||||
|
console.log('收到响应:', response.status, response.config.url);
|
||||||
|
return response;
|
||||||
|
},
|
||||||
|
(error) => {
|
||||||
|
console.error('响应错误:', error);
|
||||||
|
const message = error.response?.data?.message || '网络请求失败';
|
||||||
|
return Promise.reject(new Error(message));
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* API接口定义
|
||||||
|
*/
|
||||||
|
export const apiService = {
|
||||||
|
/**
|
||||||
|
* 健康检查
|
||||||
|
*/
|
||||||
|
healthCheck: () => {
|
||||||
|
return api.get('/health');
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上传SQL文件并转换
|
||||||
|
* @param {File} file SQL文件
|
||||||
|
* @param {Function} onProgress 上传进度回调
|
||||||
|
*/
|
||||||
|
uploadFile: (file, onProgress) => {
|
||||||
|
const formData = new FormData();
|
||||||
|
formData.append('file', file);
|
||||||
|
|
||||||
|
return api.post('/upload', formData, {
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'multipart/form-data',
|
||||||
|
},
|
||||||
|
onUploadProgress: (progressEvent) => {
|
||||||
|
if (onProgress) {
|
||||||
|
const percentCompleted = Math.round(
|
||||||
|
(progressEvent.loaded * 100) / progressEvent.total
|
||||||
|
);
|
||||||
|
onProgress(percentCompleted);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 下载转换后的文件
|
||||||
|
* @param {number} recordId 转换记录ID
|
||||||
|
*/
|
||||||
|
downloadFile: (recordId) => {
|
||||||
|
return api.get(`/download/${recordId}`, {
|
||||||
|
responseType: 'blob',
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取转换历史记录
|
||||||
|
* @param {number} page 页码
|
||||||
|
* @param {number} pageSize 每页数量
|
||||||
|
*/
|
||||||
|
getHistory: (page = 1, pageSize = 20) => {
|
||||||
|
return api.get('/history', {
|
||||||
|
params: { page, page_size: pageSize },
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取单个转换记录详情
|
||||||
|
* @param {number} recordId 记录ID
|
||||||
|
*/
|
||||||
|
getRecord: (recordId) => {
|
||||||
|
return api.get(`/record/${recordId}`);
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export default apiService;
|
||||||
Loading…
Reference in New Issue
Block a user