Эта версия добавляет поддержку CORS для интеграции с внешним клиентом (фронтендом на другом порту/домине). Бэкенд-логика и API остаются прежними, дополнительно настроены заголовки CORS и конфигурация CORS_ORIGIN.
-
CORS middleware (
presentation/middleware.go):CORS(corsOrigin string) func(http.HandlerFunc) http.HandlerFunc— оборачивает handlers и добавляет CORS‑заголовки- Обрабатывает preflight‑запросы (
OPTIONS) с ответом200 OK
-
Расширенная конфигурация (
infrastructure/config/env.go):- Поле
CORSOrigin stringвConfig - Загрузка переменной окружения
CORS_ORIGIN(по умолчаниюhttp://localhost:3000)
- Поле
- cmd/main.go:
- Создание middleware:
corsMiddleware := presentation.CORS(cfg.CORSOrigin) - Применение CORS к API эндпоинтам (
/api/sites,/api/site,/api/sites/:id/history) и к/health - Логика воркера, graceful shutdown и остальные обработчики — без изменений
- Создание middleware:
Поддерживаются переменные окружения (файл .env):
PORT=8080
DB_PATH=uptime_monitor.db
CORS_ORIGIN=http://localhost:3000
CORS_ORIGIN— адрес клиента, которому разрешены кросс‑доменные запросы.
GET /health— проверка работоспособностиGET /info— информация о сервереGET /check?url=<website_url>— одноразовая проверка доступностиPOST /api/site— создать сайтGET /api/sites— список сайтов с последним статусомDELETE /api/site/:id— удалить сайтGET /api/sites/:id/history?limit=<n>— история проверок сайта
Получить список сайтов со статусами:
curl http://localhost:8080/api/sitesСоздать сайт:
curl -X POST http://localhost:8080/api/site \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com"}'Удалить сайт:
curl -X DELETE http://localhost:8080/api/site/1История проверок (с лимитом):
curl "http://localhost:8080/api/sites/1/history?limit=10"- Установите зависимости:
go mod tidy- Запустите сервер:
go run ./cmd/main.go- CORS middleware добавляет заголовки:
Access-Control-Allow-Origin: <CORS_ORIGIN>Access-Control-Allow-Methods: GET, POST, DELETE, OPTIONSAccess-Control-Allow-Headers: Content-TypeAccess-Control-Allow-Credentials: true
- Для preflight‑запросов (
OPTIONS) middleware возвращает200 OKдо передачи управления handler’у.