Проект ShareIt представляет собой систему для управления бронированием вещей, где пользователи могут добавлять, обновлять и бронировать вещи, а также оставлять комментарии. Система состоит из двух основных компонентов: сервера и шлюза.
- Java: Основной язык программирования.
- Spring Boot: Фреймворк для создания веб-приложений.
- Spring Data JPA: Для работы с базой данных и управления сущностями.
- Hibernate: ORM для работы с базой данных.
- Maven: Инструмент для управления зависимостями и сборки проекта.
- PostgreSQL: Система управления базами данных (можно заменить на другую при необходимости).
- REST API: Архитектурный стиль для взаимодействия между клиентом и сервером.
- Lombok: Библиотека для упрощения написания кода.
- MapStruct: Для маппинга между объектами.
- JUnit: Для написания тестов.
- Модели: Определяют структуру данных, такие как User, Item, Booking, Comment и другие.
- Контроллеры: Обрабатывают HTTP-запросы и взаимодействуют с сервисами. Например, UserController, ItemController, BookingController.
- Сервисы: Содержат бизнес-логику. Например, UserService, ItemService, BookingService.
- DTO: Объекты передачи данных, такие как UserDto, ItemDto, BookingDto, используются для обмена данными между клиентом и сервером.
- Исключения: Определяют пользовательские исключения и обработчики ошибок, такие как MyNotFoundException, DuplicatedException.
- Клиенты: Используют RestTemplate для взаимодействия с сервером. Например, UserClient, ItemClient, BookingClient.
- Контроллеры: Обрабатывают HTTP-запросы на уровне шлюза и передают их на сервер. Например, UserController, ItemController, BookingController.
- DTO: Определяют структуры данных для запросов, такие как UserDTO, ItemAddDto, CommentAddDto.
- Убедитесь, что у вас установлен JDK и Maven.
- Клонируйте репозиторий.
- Перейдите в директорию проекта и выполните команду:
mvn clean install
- Запустите сервер и шлюз:
mvn spring-boot:run
-
Пользователи:
- POST /users: Создание нового пользователя.
- PATCH /users/{id}: Обновление информации о пользователе.
- GET /users/{id}: Получение информации о пользователе.
- GET /users: Получение всех пользователей.
- DELETE /users/{id}: Удаление пользователя.
-
Вещи:
- POST /items: Добавление новой вещи.
- PATCH /items/{itemId}: Обновление информации о вещи.
- GET /items: Получение всех вещей.
- GET /items/{itemId}: Получение информации о вещи.
- GET /items/search: Поиск вещей по тексту.
- POST /items/{itemId}/comment: Добавление комментария к вещи.
-
Бронирования:
- POST /bookings: Создание нового бронирования.
- PATCH /bookings/{bookingId}: Подтверждение бронирования.
- GET /bookings: Получение всех бронирований для пользователя.
- GET /bookings/owner: Получение всех бронирований для владельца вещи.
- GET /bookings/{bookingId}: Получение информации о бронировании.