Back-end приложение, которое имеет RESTful HTTP методы выполняющие:
- Добавление товара
- Редактирование товара
- Удаление товара
- Просмотр всех существующих товаров по типу
- Просмотр товара по идентификатору
Требование к установке:
- Наличие JDK (версии 15 и выше)
- Наличие IDE (Intellij IDEA, Eclipse и т.д.)
Необходимо клонировать репозиторий любым удобным способом, провести сборку c помощью maven:
mvn package
Для сохранения базы данных в памяти необходимо дополнить файл application.properties в строке url:
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_ON_EXIT=FALSE
Скомпилированный файл jar запустить на целевом компьютере или сервере с JVM.
Приложение позволяет обрабатывать rest http запросы:
Метод | URL | Действие |
---|---|---|
GET | /products | Возвращает список всех товаров в ассортименте |
GET | /products/{id} | Возвращает товар с заданным id |
GET | /computers | Возвращает список товаров, соответствующих типу компьютер |
GET | /screens | Возвращает список товаров, соответствующих типу монитор |
GET | /laptops | Возвращает список товаров, соответствующих типу ноутбук |
GET | /harddrives | Возвращает список товаров, соответствующих типу жесткий диск |
POST | /computers | Добавляет в бд запись о товаре компьютер |
POST | /screens | Добавляет в бд запись о товаре монитор |
POST | /laptops | Добавляет в бд запись о товаре ноутбук |
POST | /harddrives | Добавляет в бд запись о товаре жесткий диск |
PUT | /computers/{id} | Изменяет в бд запись о товаре компьютер с заданным id |
PUT | /screens/{id} | Изменяет в бд запись о товаре монитор с заданным id |
PUT | /laptops/{id} | Изменяет в бд запись о товаре ноутбук с заданным id |
PUT | /harddrives/{id} | Изменяет в бд запись о товаре жесткий диск с заданным id |
DELETE | /harddrives/{id} | Удаляет из бд запись о товаре с заданным id |
Методы POST и PUT требуют в теле запроса объект соответствующего типа в формате JSON.
Классы типы товаров Computer, Laptop, Sreen, HardDrive
унаследованы от родителя Product
. Класс Product
имеет стратегию наследования @Inheritance(strategy = InheritanceType.JOINED)
. Тем самым при работе приложения используется общая таблица для основных атрибутов товаров, тогда как для уникальных атрибутов будет создаваться дополнительная таблица для каждого типа товара, имеющая внешний ключ с ссылкой на общую таблицу.
Для добавления нового типа товара необходимо:
- Создать новый класс, унаследованный от класса
Product
- Указать аннотации
@Entity @PrimaryKeyJoinColumn(name = "id")
- Добавить конструктор без параметров, с указанием параметров, геттеры и сеттеры для полей
- Дополнить интерфейс ProductService и его реализацию методами по добавлению, редактированию и просмотру объектов в бд
- Добавить соответствующие методы в контроллер с указанием соответствующего маппинга