Files
jczxw-pc/.output/server/chunks/build/request-BIxQh2im.mjs
赵忠林 528fe28ffc feat(api): 添加多路由代理处理实现
- 新增api目录下多个接口路径代理处理文件,支持动态拼接目标URL
- 根据环境变量选择不同的后端服务地址(如dev和生产环境)
- 统一添加TenantId和Authorization请求头传递租户及身份信息
- 实现请求参数及搜索参数的完整转发
- 引入better-sqlite3及node内建模块支持服务端功能
- 新增专家详情页面,实现文章、成果及预约咨询功能展示
- 页面实现加载骨架屏、标签页切换及空状态提示优化体验
2026-04-28 13:50:27 +08:00

71 lines
2.4 KiB
JavaScript

import { f as useRequestFetch, M as MODULES_API_URL, g as useRuntimeConfig, S as SERVER_API_URL, A as APP_API_URL } from './server.mjs';
function getTenantId(defaultTenantId = "5") {
return defaultTenantId;
}
function getFetch() {
try {
return useRequestFetch();
} catch {
return globalThis.$fetch;
}
}
function normalizeUrl(url) {
const config = useRuntimeConfig();
const serverBase = config.public.serverApiBase;
const modulesBase = config.public.modulesApiBase;
const appBase = config.public.appApiBase;
if (url.startsWith(serverBase)) {
return SERVER_API_URL + url.slice(serverBase.length);
}
if (url.startsWith(modulesBase)) {
return MODULES_API_URL + url.slice(modulesBase.length);
}
if (url.startsWith(appBase)) {
return APP_API_URL + url.slice(appBase.length);
}
return url;
}
function mergeHeaders(headers) {
const config = useRuntimeConfig();
const tenantId = headers?.TenantId ?? headers?.tenantId ?? getTenantId(String(config.public.tenantId));
const merged = {
TenantId: String(tenantId)
};
if (headers) {
for (const [key, value] of Object.entries(headers)) {
if (value === void 0 || value === null) continue;
merged[key] = String(value);
}
}
return merged;
}
function withDefaultModuleBase(url) {
if (url.startsWith("http://") || url.startsWith("https://")) return url;
if (url.startsWith("/api/_server") || url.startsWith("/api/_modules") || url.startsWith("/api/_file")) return url;
if (url.startsWith("/api/app")) return "/api/_app" + url.slice("/api/app".length);
if (!url.startsWith("/")) return MODULES_API_URL + "/" + url;
return MODULES_API_URL + url;
}
async function request(method, url, body, config = {}) {
const $fetch = getFetch();
const normalized = withDefaultModuleBase(normalizeUrl(url));
const data = await $fetch(normalized, {
method,
query: config.params,
body: body ?? config.data,
headers: mergeHeaders(config.headers),
responseType: config.responseType
});
return { data };
}
const requestClient = {
get: (url, config) => request("GET", url, void 0, config),
delete: (url, config) => request("DELETE", url, void 0, config),
post: (url, data, config) => request("POST", url, data, config),
put: (url, data, config) => request("PUT", url, data, config)
};
export { requestClient as r };
//# sourceMappingURL=request-BIxQh2im.mjs.map