refactor(frontend): 替换 axios 为自定义 api 模块

This commit is contained in:
zhang1106
2026-03-13 15:30:09 +08:00
parent d06b191c80
commit 7094c8be49
2 changed files with 34 additions and 34 deletions
+8 -8
View File
@@ -32,7 +32,7 @@ import {
CloudDownloadOutlined, CloudDownloadOutlined,
FileProtectOutlined, FileProtectOutlined,
} from '@ant-design/icons'; } from '@ant-design/icons';
import axios from 'axios'; import api from '../api';
import { useNavigate } from 'react-router-dom'; import { useNavigate } from 'react-router-dom';
const { Title, Text, Paragraph } = Typography; const { Title, Text, Paragraph } = Typography;
@@ -67,9 +67,9 @@ const AutoBackupSettings = () => {
try { try {
setLoading(true); setLoading(true);
isFetching.current = true; isFetching.current = true;
const response = await axios.get('/api/backup/auto/status'); const response = await api.get('/backup/auto/status');
if (response.data?.success) { if (response?.success) {
const data = response.data.data; const data = response.data;
setStatus(data); setStatus(data);
// 解析 Cron 表达式获取小时和分钟 // 解析 Cron 表达式获取小时和分钟
@@ -101,7 +101,7 @@ const AutoBackupSettings = () => {
const handleSave = async () => { const handleSave = async () => {
try { try {
setLoading(true); setLoading(true);
const response = await axios.post('/api/backup/auto/settings', { const response = await api.post('/backup/auto/settings', {
enabled: settings.enabled, enabled: settings.enabled,
hour: settings.hour, hour: settings.hour,
minute: settings.minute, minute: settings.minute,
@@ -111,7 +111,7 @@ const AutoBackupSettings = () => {
maxAgeDays: settings.maxAgeDays, maxAgeDays: settings.maxAgeDays,
}); });
if (response.data?.success) { if (response?.success) {
message.success('自动备份设置已保存'); message.success('自动备份设置已保存');
setModified(false); setModified(false);
// 不需要立即刷新,因为保存成功后状态已经是最新的 // 不需要立即刷新,因为保存成功后状态已经是最新的
@@ -147,13 +147,13 @@ const AutoBackupSettings = () => {
onOk: async () => { onOk: async () => {
try { try {
setLoading(true); setLoading(true);
const response = await axios.post('/api/backup/auto/execute', { const response = await api.post('/backup/auto/execute', {
description: `手动触发 - ${new Date().toLocaleString('zh-CN')}`, description: `手动触发 - ${new Date().toLocaleString('zh-CN')}`,
includeFiles: settings.includeFiles, includeFiles: settings.includeFiles,
compress: settings.compress, compress: settings.compress,
}); });
if (response.data?.success) { if (response?.success) {
message.success('备份执行成功!'); message.success('备份执行成功!');
} }
} catch (error) { } catch (error) {
+26 -26
View File
@@ -34,7 +34,7 @@ import {
InfoCircleOutlined, InfoCircleOutlined,
SettingOutlined, SettingOutlined,
} from '@ant-design/icons'; } from '@ant-design/icons';
import axios from 'axios'; import api, { backupAPI } from '../api';
import CloseButton from '../components/CloseButton'; import CloseButton from '../components/CloseButton';
import { useNavigate } from 'react-router-dom'; import { useNavigate } from 'react-router-dom';
@@ -125,9 +125,9 @@ const BackupManagement = () => {
const fetchBackups = useCallback(async () => { const fetchBackups = useCallback(async () => {
setLoading(true); setLoading(true);
try { try {
const response = await axios.get('/api/backup/list'); const response = await api.get('/backup/list');
if (response.data?.success) { if (response?.success) {
setBackups(response.data.data?.backups || []); setBackups(response.data?.backups || []);
} }
} catch (error) { } catch (error) {
message.error('获取备份列表失败'); message.error('获取备份列表失败');
@@ -138,9 +138,9 @@ const BackupManagement = () => {
const fetchBackupInfo = useCallback(async () => { const fetchBackupInfo = useCallback(async () => {
try { try {
const response = await axios.get('/api/backup/info'); const response = await api.get('/backup/info');
if (response.data?.success) { if (response?.success) {
setBackupInfo(response.data.data); setBackupInfo(response.data);
} }
} catch (error) { } catch (error) {
console.error('获取备份信息失败:', error); console.error('获取备份信息失败:', error);
@@ -155,11 +155,11 @@ const BackupManagement = () => {
const handleCreateBackup = async () => { const handleCreateBackup = async () => {
setBackupLoading(true); setBackupLoading(true);
try { try {
const response = await axios.post('/api/backup', { const response = await api.post('/backup', {
description: '手动备份', description: '手动备份',
includeFiles: true, includeFiles: true,
}); });
if (response.data?.success) { if (response?.success) {
message.success('备份创建成功'); message.success('备份创建成功');
fetchBackups(); fetchBackups();
fetchBackupInfo(); fetchBackupInfo();
@@ -179,9 +179,9 @@ const BackupManagement = () => {
const handleValidate = async (filename) => { const handleValidate = async (filename) => {
try { try {
const response = await axios.get(`/api/backup/validate/${filename}`); const response = await api.get(`/backup/validate/${filename}`);
if (response.data?.success && response.data.data?.valid) { if (response?.success && response.data?.valid) {
const data = response.data.data; const data = response.data;
Modal.info({ Modal.info({
title: ( title: (
<Space> <Space>
@@ -535,7 +535,7 @@ const BackupManagement = () => {
setRestoreProgress(10); setRestoreProgress(10);
setRestoreStatus('正在读取备份数据...'); setRestoreStatus('正在读取备份数据...');
const response = await axios.post('/api/backup/restore', { const response = await api.post('/backup/restore', {
filename, filename,
options: { options: {
overwriteExisting: true, overwriteExisting: true,
@@ -546,8 +546,8 @@ const BackupManagement = () => {
setRestoreProgress(90); setRestoreProgress(90);
setRestoreStatus('正在完成恢复...'); setRestoreStatus('正在完成恢复...');
if (response.data?.success) { if (response?.success) {
const data = response.data.data; const data = response.data;
setRestoreProgress(100); setRestoreProgress(100);
setRestoreStatus('恢复完成!'); setRestoreStatus('恢复完成!');
@@ -817,13 +817,13 @@ const BackupManagement = () => {
const handleDelete = async (filename) => { const handleDelete = async (filename) => {
try { try {
const response = await axios.delete(`/api/backup/${filename}`); const response = await api.delete(`/backup/${filename}`);
if (response.data?.success) { if (response?.success) {
message.success('删除成功'); message.success('删除成功');
fetchBackups(); fetchBackups();
fetchBackupInfo(); fetchBackupInfo();
} else { } else {
message.error(response.data?.message || '删除失败'); message.error(response?.message || '删除失败');
} }
} catch (error) { } catch (error) {
message.error('删除失败: ' + (error.response?.data?.message || error.message || '未知错误')); message.error('删除失败: ' + (error.response?.data?.message || error.message || '未知错误'));
@@ -836,18 +836,18 @@ const BackupManagement = () => {
formData.append('backup', file); formData.append('backup', file);
try { try {
const response = await axios.post('/api/backup/upload', formData, { const response = await api.post('/backup/upload', formData, {
headers: { 'Content-Type': 'multipart/form-data' }, headers: { 'Content-Type': 'multipart/form-data' },
}); });
if (response.data?.success) { if (response?.success) {
message.success('备份文件上传成功'); message.success('备份文件上传成功');
fetchBackups(); fetchBackups();
fetchBackupInfo(); fetchBackupInfo();
onSuccess(response.data.data); onSuccess(response.data);
} else { } else {
message.error(response.data?.message || '上传失败'); message.error(response?.message || '上传失败');
onError(new Error(response.data?.message)); onError(new Error(response?.message));
} }
} catch (error) { } catch (error) {
message.error('上传失败: ' + (error.response?.data?.message || error.message || '未知错误')); message.error('上传失败: ' + (error.response?.data?.message || error.message || '未知错误'));
@@ -857,14 +857,14 @@ const BackupManagement = () => {
const handleCleanBackups = async (maxCount = 30, maxAgeDays = 90, dryRun = false) => { const handleCleanBackups = async (maxCount = 30, maxAgeDays = 90, dryRun = false) => {
try { try {
const response = await axios.post('/api/backup/clean', { const response = await api.post('/backup/clean', {
maxCount, maxCount,
maxAgeDays, maxAgeDays,
dryRun, dryRun,
}); });
if (response.data?.success) { if (response?.success) {
const data = response.data.data; const data = response.data;
if (dryRun) { if (dryRun) {
Modal.info({ Modal.info({
title: '清理预览', title: '清理预览',