Skip to content

AndreySabitov/java-shareit

Repository files navigation

java-shareit

Описание

Java-ShareIt — это платформа для совместного использования вещей, где пользователи могут делиться своими предметами и брать их в аренду. Сервис создан на Java и представляет собой пример реализации микросервисной архитектуры.

Основная функциональность:

  • Размещение объявлений — пользователи могут добавлять свои вещи для аренды с описанием и условиями использования
  • Поиск и бронирование — возможность находить нужные предметы и бронировать их на конкретные даты
  • Система запросов — пользователи могут оставлять запросы на отсутствующие предметы, которые другие участники могут добавить
  • Отзывы — возможность оставлять отзывы о вещах после завершения аренды

Особенности:

  • Микросервисная архитектура состоит из двух основных компонентов:

    • Gateway — входной узел, отвечающий за валидацию и маршрутизацию запросов

    • Server — основной сервис обработки бизнес-логики

  • Масштабируемость благодаря разделению на независимые микросервисы

Технологии:

  • Java 21
  • Spring Boot 3.3.2
  • Микросервисная архитектура
  • REST API
  • PostgreSQL
  • Mockito
  • MockMvc

Для запуска проекта необходимо:

  • Клонировать репозиторий
  • Убедиться, что у вас установлен Docker и Docker Compose
  • Собрать проект:
mvn clean package
  • Запустить все сервисы с помощью команды:
docker-compose up -d

API:

URL HTTP - метод Описание
/users/{id} GET Получить информацию о пользователе по id
/users POST Создать пользователя
/users/{id} PATCH Редактировать информацию о пользователе
/users/{id} DELETE Удалить пользователя
/requests POST Создать запрос на нужную вещь
/requests GET Получить список всех своих запрашиваемых вещей
/requests/all GET Получить список всех запрашиваемых вещей других пользователей
/requests/{id} GET Получить запрос на вещь по id
/items POST Добавить вещь для аренды
/items PATCH Редактировать информацию о вещи
/items/{id} GET Просмотреть информацию о вещи по id
/items GET Просмотреть список своих вещей предоставленных для аренды
/items/search GET Поиск вещей по названию или описанию
/items/{id}/comment POST Добавить отзыв о вещи после завершения аренды
/bookings POST Отправить запрос на бронирование вещи
/bookings/{id} PATCH Подтвердить или отклонить аренду
/bookings/{id} GET Просмотреть информацию о бронировании
/bookings GET Получить список всех бронирований пользователя
/bookings/owner GET Получить список бронирований вещей пользователя