Сервис обеспечивает пользователям, возможность рассказывать, какими вещами они готовы поделиться,находить нужную вещь и брать её в аренду на какое-то время.
Сервис позволяет бронировать вещь на определённые даты, закрывать к ней доступ на время бронирования от других желающих. На случай, если нужной вещи на сервисе нет, у пользователей есть возможность оставлять запросы. По запросу можно добавлять новые вещи для шеринга.
- Добавление новой вещи. Происходит по эндпойнту POST /items. На вход поступает объект ItemDto. userId в заголовке X-Sharer-User-Id — это идентификатор пользователя, который добавляет вещь. Именно этот пользователь — владелец вещи. Идентификатор владельца будет поступать на вход в каждом из запросов.
- Редактирование вещи. Эндпойнт PATCH /items/{itemId}. Изменить можно название, описание и статус доступа к аренде. Редактировать вещь может только её владелец.
- Просмотр информации о конкретной вещи по её идентификатору. Эндпойнт GET /items/{itemId}. Информацию о вещи может просмотреть любой пользователь.
- Просмотр владельцем списка всех его вещей с указанием названия и описания для каждой. Эндпойнт GET /items.
- Поиск вещи потенциальным арендатором. Пользователь передаёт в строке запроса текст, и система ищет вещи, содержащие этот текст в названии или описании. Происходит по эндпойнту /items/search?text={text}, в text передаётся текст для поиска. Проверьте, что поиск возвращает только доступные для аренды вещи.
Приложение shareIt-server - содержит всю основную логику.
Приложение shareIt-gateway - содержит контроллеры, с которыми непосредственно работают пользователи, — вместе с валидацией входных данных.
Каждое из приложений запускается как самостоятельное Java-приложение, а их общение происходить через REST. Чтобы сделать запуск и взаимодействие приложений более предсказуемым и удобным, каждое из них размещено в своём Docker-контейнере. Также в Docker-контейнер вынесена база данных.
- REST сервисы с использованием Spring Boot, Maven, Lombok, взаимодействие с БД, микросервисная архитектура, Мок-тестирование.
