diff --git a/src/services/api.js b/src/services/api.js
new file mode 100644
index 0000000..36ccab4
--- /dev/null
+++ b/src/services/api.js
@@ -0,0 +1,44 @@
+import axios from 'axios';
+
+// 创建axios实例
+const api = axios.create({
+    baseURL: '/api',  // 使用相对路径，让Vite代理处理
+    timeout: 10000,
+    headers: {
+        'Content-Type': 'application/json',
+    }
+});
+
+// 请求拦截器
+api.interceptors.request.use(
+    config => {
+        // 从localStorage获取token
+        const token = localStorage.getItem('token');
+        if (token) {
+            config.headers.Authorization = `Bearer ${token}`;
+        }
+        return config;
+    },
+    error => {
+        return Promise.reject(error);
+    }
+);
+
+// 响应拦截器
+api.interceptors.response.use(
+    response => {
+        return response.data;
+    },
+    error => {
+        if (error.response) {
+            // 处理401未授权错误
+            if (error.response.status === 401) {
+                localStorage.removeItem('token');
+                window.location.href = '/login';
+            }
+        }
+        return Promise.reject(error);
+    }
+);
+
+export default api; 
\ No newline at end of file
