更新index.html,优化API调用函数,增强请求处理逻辑并添加错误处理

This commit is contained in:
Zhuym 2025-01-30 21:11:32 +08:00
parent 9ca6cde4b0
commit f923ed0695

View File

@ -223,7 +223,7 @@
} }
.MuiTypography-h6 { .MuiTypography-h6 {
font-size: 1.1rem !重要; font-size: 1.1rem !important;
} }
/* 表单样式 */ /* 表单样式 */
@ -493,11 +493,12 @@
localStorage.setItem('apiLogs', JSON.stringify(updatedLogs)); localStorage.setItem('apiLogs', JSON.stringify(updatedLogs));
}; };
const handleApiCall = async (endpoint, method = 'GET', formData = null, config) => { const handleApiCall = async (endpoint, method = 'GET', formData = null, config = {}) => {
try { try {
const options = { const options = {
method, method,
headers: { 'Content-Type': 'application/json' } headers: {},
credentials: 'include', // 支持跨域请求携带 Cookie
}; };
let url = `${apiBase}${endpoint}`; let url = `${apiBase}${endpoint}`;
@ -506,19 +507,37 @@
if (method === 'GET' && config.queryParams) { if (method === 'GET' && config.queryParams) {
const params = new URLSearchParams(); const params = new URLSearchParams();
config.queryParams.forEach(param => { config.queryParams.forEach(param => {
if (formData[param]) params.append(param, formData[param]); if (formData && formData[param]) {
params.append(param, formData[param]);
}
}); });
url += `?${params.toString()}`; url += `?${params.toString()}`;
} }
// 处理POST请求体 // 处理请求体
if (method === 'POST') { if (['POST', 'PUT', 'PATCH'].includes(method)) {
if (config.requestFormat === 'json') { if (formData instanceof FormData) {
// 文件上传时,不设置 Content-Type浏览器会自动处理
options.body = formData;
} else if (config.requestFormat === 'json') {
options.headers['Content-Type'] = 'application/json';
options.body = JSON.stringify(formData); options.body = JSON.stringify(formData);
} else {
options.headers['Content-Type'] = 'application/x-www-form-urlencoded';
options.body = new URLSearchParams(formData).toString();
} }
} }
// 发送请求
const res = await fetch(url, options); const res = await fetch(url, options);
// 检查 HTTP 状态码
if (!res.ok) {
const errorData = await res.json();
throw new Error(errorData.message || `HTTP error! Status: ${res.status}`);
}
// 解析响应数据
const data = await res.json(); const data = await res.json();
setResponse(JSON.stringify(data, null, 2)); setResponse(JSON.stringify(data, null, 2));
@ -541,11 +560,13 @@
}); });
} }
// 根据状态设置提示消息 // 设置提示消息
setSnackbarMessage(data.info || '操作成功'); setSnackbarMessage(data.info || '操作成功');
setSnackbarOpen(true); setSnackbarOpen(true);
} catch (error) { } catch (error) {
// 错误处理
console.error('API call failed:', error);
setResponse(`Error: ${error.message}`); setResponse(`Error: ${error.message}`);
setSnackbarMessage(`错误: ${error.message}`); setSnackbarMessage(`错误: ${error.message}`);
setSnackbarOpen(true); setSnackbarOpen(true);
@ -800,6 +821,7 @@
<Box display="flex" justifyContent="space-between" alignItems="center" mt={2}> <Box display="flex" justifyContent="space-between" alignItems="center" mt={2}>
<Typography variant="body2" color="textSecondary"> <Typography variant="body2" color="textSecondary">
⚠️部分后端地址已设置访问认证保护,使用前需完成身份认证。 ⚠️部分后端地址已设置访问认证保护,使用前需完成身份认证。
</Typography> </Typography>
<Button <Button
variant="text" variant="text"