Сервис для
шеринга
(от англ.share - "делиться"
), даёт возможность пользователям делиться своими ненужными (а может и нужными) вещичками. Это может быть что угодно, будь то блендер, тостер, шуруповерт или бетономешалка. Если у вас имеется ненужная вещь, можно поделиться ею с друзьями и комьюнити и как говорится... "почеши мою спинку, а я почешу твою", соответственно и вещи других пользователей ты можешь так же бронировать. Но знай! Когда бронирование подойдет к концу, будь добр, отдай её владельцу, чтобы другие пользователи тоже могли ей пользоваться.
Important
Создано с помощью:
- Java 11
- Spring (Boot, Data, MVC)
- JPA(Hibernate)
- PostgreSQL, H2
- Lombok
- MapStruct
- Maven
- Docker
- JUnit
- Mockito
- MockMVC
- Postman
Note
Что это? Это RESTful API для сервиса бронирования вещей
. Возможности и взаимодействие смотрите ниже.
Работает на миросервисной архитектуре:
Gateway
(шлюз). Шлюз позволяет обрабатывать первичные запросы и производить валидацию данных, отбрасывая ненужные запросы. Их можно использовать в неограниченном количестве для снижения нагрузки на основной сервер.Server
(основной сервер). Производит вторичную проверку данных. Затем, направляет запрос в основную бизнес-логику,- которая в свою очередь отправляет запросы в третий сервис с БД.
DataBase
(сервер базы данных). Использует СУБД PostgreSQL, отвечает за хранение пользовательских данных.
Реализованные эндпоинты:
User
(Пользователи) - основные CRUD операции над пользователями находятся здесь.Item
(Вещи) - позволяет пользователям взаимодействовать с вещами. Добавить, удалить, обновить свои. Смотреть чужие, оставить отзыв к вещам.Booking
(Бронирование) - взаимодействие владельцев вещей и их потребителей. Потребитель создает запрос на бронирование, а владелец должен его подтвердить.Request
(Запросы) - если в базе нет нужной вещи, тогда потребитель создает запрос на нее и если у кого-либо из пользователей есть такая вещь, то он её добавляет в систему и даёт возможность бронировать всем.
Tip
Что можно улучшить:
- добавить
Liquibase
и перевести инициализацию БД - добавить
Spring Security
- добавить оркестрацию контейнерами
Kubernetes (K8s)
- добавить брокер очередей (
Kafka/RabbitMQ
) - добавить использование кеша на основе
Redis
Адрес | Описание |
---|---|
POST /users |
Создать нового пользователя |
PATCH /users/{userId} |
Частичное обновление данных о пользователе |
GET /users |
Получить список пользователей |
GET /users/{userId} |
Получить данные о конкретном пользователе по ID |
DELETE /users/{userId} |
Удалить конкретного пользователя по ID |
Адрес | Описание |
---|---|
POST /items |
Добавить новую вещь |
PATCH /items/{itemId} |
Отредактировать свою вещь |
GET /items |
Получить список всех своих вещей |
GET /items/search?text={text} |
Параметризованный поиск по всем вещам для потребителей |
GET /items/{itemId} |
Получить данные о конкретной вещи по ID |
POST /items/{itemId}/comment |
Оставить отзыв на вещь , для тех, кто ее брал в аренду |
Адрес | Описание |
---|---|
POST /bookings |
Добавить новое бронирование на вещь |
PATCH /bookings/{bookingId}?approved={approved} |
Владелец вещи должен подтвердить или отклонить брованирование |
GET /bookings?state={state} |
Получить список своих бронирований на вещи |
GET /bookings/owner?state={state} |
Получить список брованирований на свои вещи |
GET /bookings/{bookingId} |
Получить данные о конкретном бронировании по ID |
Адрес | Описание |
---|---|
POST /requests |
Добавить новый запрос на вещь |
GET /requests |
Получить список своих запросов вместе с данными об ответах на них |
GET /requests/all?from={from}&size={size} |
Получить параметризованный список всех запросов |
GET /requests/{requestId} |
Получить конкретный запрос по ID |
- С помощью Maven собрать проект
mvn clean install
- Установить Docker Compose
- Собрать 3 образа с помощью команды
docker-compose up
- Запустить образы в Docker
- На запущенных сервисах можно сделать проверку тестами в Postman