Бэкенд для фронтенда drupal/.
- Node.js (без Express или других высокоуровневых фреймворков)
- Кастомный микро-фреймворк:
- единая точка входа (
src/index.js) - кастомный роутер с поддержкой динамических параметров
- поддержка middleware
- простой шаблонизатор
- единая точка входа (
- MySQL 8
- Docker / docker-compose
- REST API для данных формы:
POST /api/forms- создание нового профиля для неавторизованного пользователяPUT /api/forms/:id- обновление ранее отправленных данных для авторизованного пользователяGET /api/forms/:id- получение ранее отправленных данных для авторизованного пользователя
- Типы контента:
- входящий: JSON или XML
- исходящий: JSON или XML (определяется заголовком
Acceptили XML-запросом)
- Логика валидации является общей для API и HTML-фоллбэка (без дублирования кода).
- Авторизация для API чтения/обновления: HTTP Basic (
login:password). - Поддержка CORS для списка разрешенных источников фронтенда (
FRONTEND_ORIGINS). - HTML-страница (фоллбэк) с динамическими JS-обработчиками формы:
- JS включен: отправка через fetch без перезагрузки страницы
- JS отключен: работает обычная отправка формы методом POST
POST /api/forms (для неавторизованных) возвращает:
- сгенерированный
login - сгенерированный
password profileUrl(адрес профиля пользователя)
- Создайте файл окружения:
cp .env.example .env- Запустите сервисы:
docker compose up -d --build- Откройте в браузере:
- статус бэкенда (health):
http://localhost:18085/health - страницу-фоллбэк:
http://localhost:18085/
APP_HOST_PORT=18085PORT=3000DB_HOST=mysqlDB_PORT=3306DB_NAME=drupal_backendDB_USER=drupalDB_PASSWORD=drupalDB_ROOT_PASSWORD=rootBASE_URL=http://localhost:18085FRONTEND_ORIGINS=https://wacko-io.github.io,http://localhost:5173,http://127.0.0.1:5173
Фронтенд уже переведен с Formcarry на этот API бэкенда.
Задайте URL бэкенда для сборки/выполнения Vite:
VITE_BACKEND_URL=http://localhost:18085Затем пересоберите фронтенд:
npm run build