luoqiang 506ab4857a 引入后端API项目并重构前后端桥接与路由
本次提交新增了 Avalonia-API(Web API)与 Avalonia-Services(业务服务)两个项目,完善了解决方案结构。重构了 Avalonia-PC 前端与后端的桥接逻辑,实现了基于前缀的路由分发、静态服务、开发者工具等功能。同步更新了 .gitignore、api.js 及相关配置文件,为后续业务扩展和维护打下基础。
2026-04-23 17:25:31 +08:00

51 lines
1.2 KiB
JavaScript

// api.js - 跨端统一 API 调用层
const isWebView2 = () => {
return window.isWebView2 === true;
};
const getBaseUrl = () => {
if (isWebView2()) {
return "app://api/";
}
return "https://your-production-api.com/api/";
};
async function callApi(endpoint, options = {}) {
const url = getBaseUrl() + endpoint;
const fetchOptions = {
method: options.method || "GET",
headers: {
"Content-Type": "application/json",
...(options.headers || {})
},
...(options.body && { body: JSON.stringify(options.body) })
};
const token = localStorage.getItem("authToken");
if (token) {
fetchOptions.headers.Authorization = `Bearer ${token}`;
}
try {
const response = await fetch(url, fetchOptions);
const data = await response.json();
console.log(data)
if (!response.ok) {
throw new Error(data.error || `HTTP ${response.status}`);
}
return data;
} catch (err) {
console.error(`API call failed: ${endpoint}`, err);
throw err;
}
}
window.api = {
getUser: () => callApi("getUser?t=1"),
processData: (input) => callApi("processData", { method: "POST", body: { input } })
};