Skip to content
Geprüft85%
Vollständigkeit:
80%
Korrektheit:
90%
⏳ Noch nicht geprüft

Astro API 端点和后端集成

状态: ✅ 已完全记录

概述

p2d2 应用程序使用 Astro API 端点与外部地理数据服务进行安全的后端集成。这些端点为 WFS 服务、Overpass API 和 Geoserver 集成提供 CORS 处理、身份验证和强大的错误处理功能。

安全提示

凭证状态

注意: 在生产环境中,凭证完全通过环境变量(import.meta.env.WFS_USERNAMEimport.meta.env.WFS_PASSWORD)进行管理。硬编码的凭证绝不用于生产环境,它们仅代表临时解决方案或开发/测试阶段,并标有警告。

受影响的文件:

  • src/pages/api/wfs-proxy.ts - 需要环境变量
  • src/utils/wfs-auth.ts - 需要环境变量

需要立即采取的措施:

  1. 确保生产源代码中不保留任何硬编码的凭证
  2. 为所有环境正确配置环境变量
  3. 在开发/测试中使用回退方案时发出明确警告

主要 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 变量
  • 缺少凭证时进行清晰的错误处理

结论

本文档描述了通过环境变量在生产环境中处理凭证的方法,并为开发、测试和生产使用提供了最佳实践。

注意: 本文是在人工智能辅助下自动翻译的,尚未经过人工审校。