/api/login - вход в систему/api/login/register - регистрация/api/halls - загрузка всех залов/api/favorites - загрузка избранного/api/favorites - добавление в избранное/api/halls - загрузка для поиска/api/booking - создание бронирования/api/booking - загрузка бронирований┌─────────────┐
│ API Server │ (localhost:3000)
│ Node.js │
└──────┬──────┘
│
├──► GET /api/halls → CatalogTab
├──► GET /api/favorites → CatalogTab
├──► POST /api/favorites → CatalogTab
├──► GET /api/booking → ProfileTab
├──► POST /api/booking ← CartTab
├──► POST /api/login ← AuthTab
├──► POST /api/login/register ← AuthTab
└──► GET /api/services → (подготовлено)
↓
├─────────────────────────────┐
│ Frontend (Vite/Vue 3) │
├─────────────────────────────┤
│ localStorage → jwt_token │
└─────────────────────────────┘
// Сохраняется в
localStorage.jwt_token = "eyJhbGci..."
// Отправляется как
Authorization: "Bearer eyJhbGci..."
// Содержит
{ id: 1, firstName: "John" }
// Декодируется на клиенте
atob(token.split('.')[1]) → JSON.parse()
GET /api/favorites — требует токенаPOST /api/favorites — требует токенаGET /api/booking — требует токена (опционалено)POST /api/booking — требует токенаPATCH /api/booking/:id — требует токенаDELETE /api/booking/:id — требует токенаПользователь → AuthTab
↓
API /api/login
↓
JWT Token
↓
localStorage
↓
Редирект на Home
CatalogTab (загрузка)
↓
GET /api/halls → Загружаются все залы
↓
GET /api/favorites (если авторизован) → Загружается избранное
↓
Отображение с кнопками сортировки/фильтрации
CatalogTab → Диалог даты/времени
↓
CartTab → localStorage (временно)
↓
Показ количества на иконке
CartTab (нажимает "Оплатить")
↓
Проверка JWT токена
↓
Для каждого товара → POST /api/booking
↓
При успехе → Очищает корзину
↓
Показывает сообщение успеха
ProfileTab (загрузка)
↓
Декодирует JWT → Получает user.id
↓
GET /api/booking → Загружает все бронирования
↓
Фильтрует по client_id === user.id
↓
Отображает с форматированием дат
| Функция | Статус | API | Компонент |
|---|---|---|---|
| Регистрация | ✅ | POST /api/login/register |
AuthTab |
| Вход | ✅ | POST /api/login |
AuthTab |
| Просмотр залов | ✅ | GET /api/halls |
CatalogTab |
| Избранное | ✅ | GET/POST /api/favorites |
CatalogTab |
| Корзина | ✅ | - | CartTab |
| Создание брон. | ✅ | POST /api/booking |
CartTab |
| Просмотр профиля | ✅ | - | ProfileTab |
| Просмотр брон. | ✅ | GET /api/booking |
ProfileTab |
| Выход | ✅ | - | ProfileTab |
| Поиск | ✅ | GET /api/halls |
SearchTab |
Решение: В App.js уже добавлено app.use(cors())
Решение: Проверьте, что токен правильно сохраняется в localStorage и передается в заголовке Authorization: Bearer ...
Решение: Проверьте если путь /HallsImages/ правильный и файлы существуют на сервере
Решение: Убедитесь, что:
Три файла документации в папке Site:
Все компоненты полностью интегрированы с API сервером. Приложение готово к:
Успехов в разработке! 🚀