POST /api/login/registerPOST /api/loginlocalStorageДанные отправляются:
{
login: string,
password: string,
firstName?: string,
lastName?: string,
phone?: string,
email?: string
}
Ответ: JWT токен сохраняется как jwt_token
GET /api/hallsGET/POST /api/favoritesAPI запросы:
// Добавить в избранное
POST /api/favorites
Headers: { Authorization: "Bearer {token}" }
Body: { hall_id: number, photographer_id: null }
// Получить избранное
GET /api/favorites
Headers: { Authorization: "Bearer {token}" }
Как работает:
GET /api/hallsPOST /api/booking (требует авторизации)Бронирование отправляется:
POST /api/booking
Headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer {token}'
}
Body: {
clientId: number, // из JWT токена
hallId: number,
startTime: ISO string,
endTime: ISO string,
totalCost: number,
status: 'pending'
}
JWT структура:
{
id: number, // client_id
firstName: string
}
| Метод | Endpoint | Требует Auth | Описание |
|---|---|---|---|
| GET | /api/halls |
❌ | Получить все залы |
| GET | /api/services |
❌ | Получить все услуги |
| POST | /api/login |
❌ | Вход пользователя |
| POST | /api/login/register |
❌ | Регистрация |
| GET | /api/favorites |
✅ | Получить избранное пользователя |
| POST | /api/favorites |
✅ | Добавить в избранное |
| GET | /api/booking |
❌ | Получить все бронирования |
| POST | /api/booking |
✅ | Создать бронирование |
| PATCH | /api/booking/:id |
✅ | Обновить бронирование |
| DELETE | /api/booking/:id |
✅ | Удалить бронирование |
localStorage.jwt_tokenBearer ${token} в headersid (client_id) и firstNametoken.split('.')[1] → atob() → JSON.parse()/HallsImages/${studio.imageURL}http://localhost:3000via.placeholder.comcd Site
npm install
npm run dev
cd Api
npm install
node app.js
Backend запустится на http://localhost:3000
Frontend на http://localhost:5173 (Vite)