Skip to content

progingir/java-shareit

Repository files navigation

Бутько Валерия Алексеевна

ShareIt - Платформа для шеринга вещей

Чего и к чему

Это проект я делала на курсе от яндекса, мне он очень понравился, так что показываю вам именно его. Я доработала по темам курса, вроде все хорошо

Для удобства яндекс встраивает в проекты готовые постман тесты, так что можете прочекать, что проект работает :) Некоторые из них полетели после моих вмешательств, но в целом ничего страшного, просто яндекс требует строгую структуру возврата, которая упала после того, как я добавила слушателя и событие

Ниже чуть более формальное описание проекта

Описание проекта

ShareIt — это Spring Boot приложение, реализующее платформу для шеринга вещей. Пользователи могут:

  • Регистрироваться и управлять своими профилями
  • Создавать, обновлять и удалять предметы, доступные для аренды
  • Создавать запросы на аренду предметов
  • Бронировать предметы, просматривать и управлять бронированиями
  • Оставлять комментарии к предметам после завершения бронирования

Проект разделен на два основных модуля:

  1. ShareIt Gateway (ShareItGatewayApp) — отвечает за обработку HTTP-запросов и маршрутизацию к основному сервису
  2. ShareIt Core (ShareItApp) — содержит бизнес-логику, работу с базой данных и REST API

Используемые технологии

  • Spring Boot: Основа приложения, включая модули Spring Web, Spring Data JPA, Spring Validation
  • Jakarta Validation: Для валидации входных данных
  • SLF4J: Для логирования
  • RestTemplate: Для взаимодействия между сервисами
  • Lombok: Для сокращения шаблонного кода (геттеры, сеттеры, конструкторы)
  • Jackson: Для сериализации/десериализации JSON

Покрытые темы Spring Boot

Проект охватывает следующие аспекты Spring Boot:

  1. Внедрение зависимостей: Используется через @Autowired, @RequiredArgsConstructor и конструкторное внедрение
  2. Веб-сервисы: Реализованы RESTful API с использованием @RestController и @Controller
  3. Валидация и интернационализация: Валидация через аннотации (@NotNull, @NotBlank, @Email), интернационализация через MessageSource и файлы сообщений
  4. Работа с базой данных: Используется Spring Data JPA с репозиториями для сущностей (User, Item, Booking, Comment, ItemRequest)
  5. События и слушатели: Реализована публикация событий (BookingCreatedEvent) через ApplicationEventPublisher
  6. Конфигурация: Настройка через @Configuration (например, MessageConfig)
  7. Аспекты: реализация через @RestControllerAdvice для обработки исключений
  8. Обслуживание: Логирование через SLF4J и обработка ошибок через GlobalExceptionHandler

Структура проекта

  • Модули:
    • ShareItGatewayApp: Шлюз для обработки HTTP-запросов и маршрутизации
    • ShareItApp: Основной сервис с бизнес-логикой и базой данных
  • Основные пакеты:
    • ru.practicum.shareit.user: Управление пользователями (создание, обновление, удаление)
    • ru.practicum.shareit.item: Управление предметами (создание, обновление, поиск, комментарии)
    • ru.practicum.shareit.booking: Управление бронированиями (создание, обновление статуса, просмотр)
    • ru.practicum.shareit.request: Управление запросами на предметы
    • ru.practicum.shareit.exception: Обработка ошибок и исключений
    • ru.practicum.shareit.config: Конфигурация приложения (например, интернационализация)

Тестирование

В проекте интегрированы Postman тесты, которые проверяют основные сценарии работы приложения:

  • Создание пользователей (POST /users)
  • Создание и получение предметов (POST /items, GET /items/{id})
  • Создание и управление бронированиями (POST /bookings, GET /bookings/{id}, PATCH /bookings/{id})
  • Проверка ошибок, таких как доступ к бронированиям от некорректного пользователя (GET /bookings/owner с неверным userId)
  • Валидация полей в ответах (например, start, end, status, booker.id, item.id)

Тесты подтверждают корректность работы API, валидацию данных и обработку ошибок, так что можете не тыкать все вручную

About

Template repository for ShareIt project.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •