init
Change-Id: I62d8e17fdc3103133b9ddaff22c27ddd9ea9f6ac
diff --git a/src/utils/axios.ts b/src/utils/axios.ts
new file mode 100644
index 0000000..c7639b0
--- /dev/null
+++ b/src/utils/axios.ts
@@ -0,0 +1,44 @@
+import axios from 'axios'
+import type { AxiosRequestConfig, AxiosResponse } from 'axios'
+
+const instance = axios.create({
+ baseURL: process.env.API_BASE_URL,
+ timeout: 10000,
+ headers: {
+ 'Content-Type': 'application/json'
+ }
+ })
+
+ // 请求拦截器
+ instance.interceptors.request.use(
+ (config) => {
+ // 添加认证 token
+ const token = localStorage.getItem('access_token')
+ if (token) {
+ config.headers.Authorization = `Bearer ${token}`
+ }
+ return config
+ },
+ (error) => {
+ return Promise.reject(error)
+ }
+ )
+
+ // 响应拦截器
+ instance.interceptors.response.use(
+ (response) => {
+ console.log('Response:', response)
+ // 统一处理响应数据格式
+ if (response.status === 200) {
+ return response.data
+ }
+ return Promise.reject(response.data)
+ },
+ (error) => {
+ // 统一错误处理
+ console.error('API Error:', error.response?.status, error.message)
+ return Promise.reject(error)
+ }
+ )
+
+export default instance
\ No newline at end of file
diff --git a/src/utils/request.ts b/src/utils/request.ts
new file mode 100644
index 0000000..7701fc0
--- /dev/null
+++ b/src/utils/request.ts
@@ -0,0 +1,33 @@
+import axios, { AxiosRequestConfig, AxiosResponse } from 'axios'
+import instance from './axios'
+
+// 封装基础请求方法
+const request = {
+ get<T = any>(url: string, config?: AxiosRequestConfig): Promise<T> {
+ return instance.get(url, config)
+ },
+
+ post<T = any>(
+ url: string,
+ data?: any,
+ config?: AxiosRequestConfig
+ ): Promise<T> {
+ return instance.post(url, data, config)
+ },
+
+ put<T = any>(url: string, data?: any, config?: AxiosRequestConfig): Promise<T> {
+ return instance.put(url, data, config)
+ },
+
+ delete<T = any>(url: string, config?: AxiosRequestConfig): Promise<T> {
+ return instance.delete(url, config)
+ }
+}
+
+// 开发环境启用 Mock
+if (process.env.NODE_ENV === 'development') {
+ require('../mock') // 你的 Mock 配置文件
+}
+
+
+export default request
\ No newline at end of file