Astro API 端点和后端集成
状态: ✅ 已完全记录
概述
p2d2 应用程序使用 Astro API 端点与外部地理数据服务进行安全的后端集成。这些端点为 WFS 服务、Overpass API 和 Geoserver 集成提供 CORS 处理、身份验证和强大的错误处理功能。
安全提示
凭证状态
注意: 在生产环境中,凭证完全通过环境变量(import.meta.env.WFS_USERNAME、import.meta.env.WFS_PASSWORD)进行管理。硬编码的凭证绝不用于生产环境,它们仅代表临时解决方案或开发/测试阶段,并标有警告。
受影响的文件:
src/pages/api/wfs-proxy.ts- 需要环境变量src/utils/wfs-auth.ts- 需要环境变量
需要立即采取的措施:
- 确保生产源代码中不保留任何硬编码的凭证
- 为所有环境正确配置环境变量
- 在开发/测试中使用回退方案时发出明确警告
主要 API 端点
1. WFS 代理端点 (/api/wfs-proxy.ts)
用于 WFS 服务请求的安全代理,支持 CORS 和基于环境的身份验证。
标准实现
typescript
const WFS_USERNAME = import.meta.env.WFS_USERNAME;
const WFS_PASSWORD = import.meta.env.WFS_PASSWORD;
if (!WFS_USERNAME || !WFS_PASSWORD) {
throw new Error("WFS authentication not configured in environment");
}开发说明
typescript
// 开发回退方案 – 仅用于本地测试,并带有明确警告:
const WFS_USERNAME = import.meta.env.WFS_USERNAME || "dev_user";
const WFS_PASSWORD = import.meta.env.WFS_PASSWORD || "dev_password";2. 多边形同步端点 (/api/sync-polygons.ts)
用于通过 Overpass API 和 WFS-T 自动同步多边形的 API 端点。
端点规范
typescript
export async function POST({ request }) {
const { slug, categories } = await request.json();
const result = await syncKommunePolygons(slug, categories);
return new Response(JSON.stringify(result), {
status: result.success ? 200 : 500
});
}后端服务集成
WFS 事务管理
WFS-T 的访问方式类似:凭证始终来自 .env 变量。
安全方面
- 凭证绝不能硬编码
- 在启动和请求时验证 .env 变量
- 缺少凭证时进行清晰的错误处理
结论
本文档描述了通过环境变量在生产环境中处理凭证的方法,并为开发、测试和生产使用提供了最佳实践。
注意: 本文是在人工智能辅助下自动翻译的,尚未经过人工审校。