Skip to content

openm1ke/Backend.Project_2

Repository files navigation

JavaBackend_Project2

Интернет магаин ShopAPI

Описание приложения

ShopAPI — это RESTful-приложение для управления данными интернет-магазина. Оно предоставляет API для работы с товарами, пользователями, поставщиками, адресами и изображениями товаров. Для тестирования и ознакомления с API используется Swagger UI в котором реализована серверная часть приложения ShopAPI.

Технологии

  • Java 17
  • Maven
  • Spring Boot
  • Spring Data JPA
  • JDBC
  • H2
  • PostgreSQL
  • Lombok
  • Swagger
  • JUnit 5

Работа с базой данных осуществляется через JDBC (Java Database Connectivity). Для преобразования данных между слоями (ResultSet -> сущности -> DTO) используются самописные мапперы.

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

Для запуска сборки необходим Maven и JDK 17

  • запуск сборки через скрипт build_app.sh или mvn clean package

Запуск проекта в докер

  • после сборки запустить в контейнере compose_up.sh

База данных

Приложение построено с использованием реляционной базы данных Postgres

Доступ к API

Архитектурные слои:

Репозиторий (Repository):

  • Выполняет SQL-запросы через JDBC.
  • Возвращает данные в виде объектов (Entity).

Сервис (Service):

  • Обрабатывает бизнес-логику.
  • Преобразует данные из сущностей (Entity) в DTO (Data Transfer Object) для контроллеров и обратно.

Контроллер (Controller):

  • Предоставляет REST API для работы с клиентом.
  • Принимает входящие запросы, передает их в сервисы и возвращает ответы в виде DTO.

Регистрация клиента:

  • При регистрации клиента создается новый пользователь в базе данных.
  • Поля автоматически проверяются на соответствие (например, email).
  • Обязательным полем при регистрации является Адрес, при создании пользователя автоматически создается уникальная запись в таблице адресов.

Обработка ошибок:

  • Используется @ControllerAdvice для централизованного перехвата и обработки исключений.
  • Конкретные ошибки, такие как отсутствие записи, нарушение уникальности и другие, обрабатываются на уровне сервисов и репозиториев.
  • Добавлена собственная аннотация для проверки ввода номера телефона.

Для контроля количества отдаваемых данных используется пагинация.

  • Параметры пагинации передаются в запросе.
  • Используется собственный формат ответа для пагинации PaginatedResponse.

Swagger UI:

  • Генерирует интерактивную документацию API.
  • Позволяет тестировать эндпоинты прямо в браузере.

Основной поток данных:

  • Запрос клиента → Контроллер → Сервис → Репозиторий.
  • Ответ из базы → Репозиторий → Сервис → Контроллер → Клиент.

Пример обработки данных:

  • SQL-запрос выполняется в репозитории.
  • Результат (ResultSet) преобразуется в объект сущности (Entity) через маппер.
  • Сервис применяет бизнес-логику и возвращает DTO.
  • Контроллер отправляет клиенту результат в формате JSON.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages