From 7ee94c502b734e8743f77cc63fc3e2ecb08deb0c Mon Sep 17 00:00:00 2001 From: liuzhiyuan <> Date: Sat, 2 Aug 2025 13:26:11 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E8=AF=B7=E6=B1=82=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/api/index.js | 11 +++++++ web/src/utils/http.js | 62 ++++++++++++++++++++++++++++++++++++++++ web/src/utils/service.js | 33 +++++++++++++++++++++ 3 files changed, 106 insertions(+) create mode 100644 web/src/api/index.js create mode 100644 web/src/utils/http.js create mode 100644 web/src/utils/service.js diff --git a/web/src/api/index.js b/web/src/api/index.js new file mode 100644 index 0000000..4e91c46 --- /dev/null +++ b/web/src/api/index.js @@ -0,0 +1,11 @@ +import http from '../utils/http' + +export default { + login(username, password) { + return http.post('/user/login', { username, password }) + }, + + getInfo() { + return http.get('/user/info') + } +} \ No newline at end of file diff --git a/web/src/utils/http.js b/web/src/utils/http.js new file mode 100644 index 0000000..d460686 --- /dev/null +++ b/web/src/utils/http.js @@ -0,0 +1,62 @@ +// src/utils/http.js +import axios from '../config/service' // 基础配置 + +/** + * 高级请求封装 + */ +const http = { + /** + * GET 请求 + * @param {string} url + * @param {object} params + * @param {object} config + */ + get(url, params = {}, config = {}) { + return axios.get(url, { params, ...config }) + }, + + /** + * POST 请求 + * @param {string} url + * @param {object} data + * @param {object} config + */ + post(url, data = {}, config = {}) { + return axios.post(url, data, config) + }, + + /** + * PUT 请求 + * @param {string} url + * @param {object} data + * @param {object} config + */ + put(url, data = {}, config = {}) { + return axios.put(url, data, config) + }, + + /** + * DELETE 请求 + * @param {string} url + * @param {object} params + * @param {object} config + */ + delete(url, params = {}, config = {}) { + return axios.delete(url, { params, ...config }) + }, + + /** + * 文件上传 + * @param {string} url + * @param {FormData} formData + * @param {object} config + */ + upload(url, formData, config = {}) { + return axios.post(url, formData, { + headers: { 'Content-Type': 'multipart/form-data' }, + ...config + }) + } +} + +export default http \ No newline at end of file diff --git a/web/src/utils/service.js b/web/src/utils/service.js new file mode 100644 index 0000000..1e71d05 --- /dev/null +++ b/web/src/utils/service.js @@ -0,0 +1,33 @@ +import axios from 'axios'; + +// 创建 Axios 实例 +const service = axios.create({ + baseURL: import.meta.env.VITE_API_BASE_URL || '/api', // 从环境变量读取 + timeout: 10000, // 请求超时时间 +}); + +// 请求拦截器 +service.interceptors.request.use( + config => { + // 可在此添加 token 等 + // config.headers['Authorization'] = getToken(); + return config; + }, + error => { + return Promise.reject(error); + } +); + +// 响应拦截器 +service.interceptors.response.use( + response => { + // 可在此统一处理响应数据 + return response.data; + }, + error => { + // 可在此统一处理错误 + return Promise.reject(error); + } +); + +export default service; \ No newline at end of file