-
Notifications
You must be signed in to change notification settings - Fork 50
Expand file tree
/
Copy pathproxy.js
More file actions
136 lines (123 loc) · 3.45 KB
/
proxy.js
File metadata and controls
136 lines (123 loc) · 3.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
/**
* 模块代理接口
* 封装 /proxy/:module/* 相关的代理转发接口
*/
import { get, post, put, del } from '../request'
import { API_PATHS } from '../config'
/**
* 构建代理接口URL
* @param {string} module - 模块名称
* @param {string} path - 代理路径
* @returns {string} 完整的代理URL
*/
const buildProxyUrl = (module, path = '') => {
const basePath = `${API_PATHS.PROXY}/${module}`
return path ? `${basePath}/${path}` : basePath
}
/**
* 代理GET请求
* @param {string} module - 模块名称
* @param {string} path - 代理路径
* @param {object} params - 查询参数
* @returns {Promise} 代理响应
*/
export const proxyGet = async (module, path = '', params = {}) => {
const url = buildProxyUrl(module, path)
return get(url, params)
}
/**
* 代理POST请求
* @param {string} module - 模块名称
* @param {string} path - 代理路径
* @param {object} data - 请求数据
* @returns {Promise} 代理响应
*/
export const proxyPost = async (module, path = '', data = {}) => {
const url = buildProxyUrl(module, path)
return post(url, data)
}
/**
* 代理PUT请求
* @param {string} module - 模块名称
* @param {string} path - 代理路径
* @param {object} data - 请求数据
* @returns {Promise} 代理响应
*/
export const proxyPut = async (module, path = '', data = {}) => {
const url = buildProxyUrl(module, path)
return put(url, data)
}
/**
* 代理DELETE请求
* @param {string} module - 模块名称
* @param {string} path - 代理路径
* @param {object} params - 查询参数
* @returns {Promise} 代理响应
*/
export const proxyDelete = async (module, path = '', params = {}) => {
const url = buildProxyUrl(module, path)
return del(url, params)
}
/**
* 通用代理请求
* @param {string} module - 模块名称
* @param {string} path - 代理路径
* @param {object} options - 请求选项
* @param {string} options.method - 请求方法
* @param {object} options.params - 查询参数(GET请求)
* @param {object} options.data - 请求数据(POST/PUT请求)
* @returns {Promise} 代理响应
*/
export const proxyRequest = async (module, path = '', options = {}) => {
const { method = 'GET', params, data } = options
switch (method.toUpperCase()) {
case 'GET':
return proxyGet(module, path, params)
case 'POST':
return proxyPost(module, path, data)
case 'PUT':
return proxyPut(module, path, data)
case 'DELETE':
return proxyDelete(module, path, params)
default:
throw new Error(`不支持的请求方法: ${method}`)
}
}
/**
* 代理文件上传
* @param {string} module - 模块名称
* @param {string} path - 代理路径
* @param {FormData} formData - 文件数据
* @returns {Promise} 上传响应
*/
export const proxyUpload = async (module, path = '', formData) => {
const url = buildProxyUrl(module, path)
return post(url, formData, {
headers: {
'Content-Type': 'multipart/form-data'
}
})
}
/**
* 代理文件下载
* @param {string} module - 模块名称
* @param {string} path - 代理路径
* @param {object} params - 查询参数
* @returns {Promise} 下载响应
*/
export const proxyDownload = async (module, path = '', params = {}) => {
const url = buildProxyUrl(module, path)
return get(url, params, {
responseType: 'blob'
})
}
// 默认导出所有代理接口
export default {
proxyGet,
proxyPost,
proxyPut,
proxyDelete,
proxyRequest,
proxyUpload,
proxyDownload
}