Конечные точки API Astro и интеграция с бэкендом
Статус: ✅ Полностью документировано
Обзор
Приложение p2d2 использует конечные точки API Astro для безопасной интеграции бэкенда с внешними геоданными. Эти конечные точки обеспечивают обработку CORS, аутентификацию и надежную обработку ошибок для сервисов WFS, Overpass API и интеграций с Geoserver.
Указания по безопасности
Статус учетных данных
Примечание: В производственной среде учетные данные управляются исключительно через переменные окружения (import.meta.env.WFS_USERNAME, import.meta.env.WFS_PASSWORD). Жестко закодированные учетные данные никогда не используются в производственных средах, а представляют собой лишь временные обходные пути или используются на этапах разработки/тестирования и помечены предупреждениями.
Затронутые файлы:
src/pages/api/wfs-proxy.ts- Ожидает переменные окруженияsrc/utils/wfs-auth.ts- Ожидает переменные окружения
Необходимые немедленные действия:
- Убедиться, что в производственном исходном коде не осталось жестко закодированных учетных данных
- Правильно настроить переменные окружения для всех сред
- При разработке/тестировании использовать четкие предупреждения при использовании резервных вариантов
Основные конечные точки API
1. Конечная точка WFS Proxy (/api/wfs-proxy.ts)
Безопасный прокси для запросов к сервису WFS с поддержкой CORS и аутентификацией на основе окружения.
Стандартная реализация
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");
}Заметки по разработке
// Резервный вариант для разработки – только для локальных тестов и с четкими предупреждениями:
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)
Конечная точка API для автоматической синхронизации полигонов с Overpass API и WFS-T.
Спецификация конечной точки
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 при запуске и при каждом запросе
- Четкая обработка ошибок в случае их отсутствия
Заключение
Документация описывает производственное обращение с учетными данными через переменные окружения и предлагает лучшие практики для разработки, тестирования и производственного использования.
Примечание: Этот текст был автоматически переведен с помощью ИИ и еще не проверен человеком.