From dc2e9ff656973a4f1041899a8309b65733ca9a99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8C=97=E6=9E=B3?= <7854742+wang_rumeng@user.noreply.gitee.com> Date: Sat, 5 Jul 2025 22:00:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=BC=96=E8=AF=91=E9=94=99?= =?UTF-8?q?=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/api.ts | 51 ++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 40 insertions(+), 11 deletions(-) diff --git a/lib/api.ts b/lib/api.ts index d936b81..1f6b7c7 100644 --- a/lib/api.ts +++ b/lib/api.ts @@ -13,10 +13,10 @@ export const apiRequest = async ( const token = getToken(); // 构建请求头 - const headers: HeadersInit = { + const headers: Record = { 'Accept': 'application/json', 'Content-Type': 'application/json', - ...options.headers, + ...(options.headers as Record), }; // 添加token到请求头(如果存在) @@ -102,11 +102,13 @@ export const apiDelete = (endpoint: string, options: RequestInit = {}) => { /** * 文件上传请求 */ -export const apiUpload = (endpoint: string, formData: FormData, options: RequestInit = {}) => { +export const apiUpload = async (endpoint: string, formData: FormData, options: RequestInit = {}) => { const token = getToken(); - const headers: HeadersInit = { - ...options.headers, + // 构建请求头(文件上传时不设置Content-Type,让浏览器自动设置) + const headers: Record = { + 'Accept': 'application/json', + ...(options.headers as Record), }; // 添加token到请求头(如果存在) @@ -114,10 +116,37 @@ export const apiUpload = (endpoint: string, formData: FormData, options: Request headers['X-EASE-ADMIN-TOKEN'] = token; } - return apiRequest(endpoint, { - ...options, - method: 'POST', - headers, - body: formData, - }); + try { + const response = await fetch(`${API_BASE_URL}${endpoint}`, { + ...options, + method: 'POST', + headers, + body: formData, + }); + + // 检查响应状态 + if (!response.ok) { + if (response.status === 401) { + // Token过期或无效 + clearAuthData(); + window.location.href = '/login'; + throw new Error('身份验证失败,请重新登录'); + } + throw new Error(`请求失败: ${response.status}`); + } + + const data = await response.json(); + + // 检查业务状态码 + if (data.code === '401' || data.status === 401) { + clearAuthData(); + window.location.href = '/login'; + throw new Error('身份验证失败,请重新登录'); + } + + return data; + } catch (error) { + console.error('API request failed:', error); + throw error; + } }; \ No newline at end of file