Skip to content

Spring Boot приложение для шеринга. Разработано по стилю REST API

Notifications You must be signed in to change notification settings

Jon7even/java-shareit

Repository files navigation

Shareit

Сервис для шеринга (от англ. 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

Сборка и запуск

  1. С помощью Maven собрать проект mvn clean install
  2. Установить Docker Compose
  3. Собрать 3 образа с помощью команды docker-compose up
  4. Запустить образы в Docker
  5. На запущенных сервисах можно сделать проверку тестами в Postman

About

Spring Boot приложение для шеринга. Разработано по стилю REST API

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages