RESTfull web-service на Java c использованием библиотеки Spring.
В качестве базы данных используется in memory database H2.
Это вариант магазина, который представляет возможность увидеть список продуктов, имеющихся в магазине, а также может взаимодейстовать с ним, добавляя и редактируя нужные нам продукты при помощи HTTP запросов.
- Добавление товара
- Редактирование товара
- Просмотр всех существующих товаров по типу
- Просмотр товара по идентификатору
Данный проект состоит из нескольких сущностей:
- Product (Продукт), который имеет общие характеристики всех продуктов
- Pc, Laptop, HardDisk, Monitor(Типы продуктов, которые наследются от сущности Product)
Сущность Product состоит из:
Product {
Поле id (Генерируется атоматически)
Поле batchNumber (Номер серии товара)
Поле price (Цена товара)
Поле numOfProdInStock (Количество продукции на складе)
}
Сущность Pc состоит из:
Pc наследует все параметры сущности Product {
Поле fromFactor (Форм-фактор пк)
}
Сущность Laptop состоит из:
Laptop наследует все параметры сущности Product {
Поле size (Размер ноутбука)
}
Сущность Monitor состоит из:
Monitor наследует все параметры сущности Product {
Поле diagonal (Диагональ монитора)
}
Сущность HardDisk состоит из:
HardDisk наследует все параметры сущности Product {
Поле capacity (Объем жесткого диска)
}
В данном приложение используются такие HTTP запросы как:
- GET (Получить)
- POST (Добавить)
- PUT (Обновить)
Примеры:
Для того чтобы добавлять товары, сначала ознакомьтесь с сущносятми (чтобы узнать какие поля нужно вводить)
Post метод для сохранения нового продукта можно выполнять по следующим ссылкам:
POST /product/{тип продукта}
Например, для добавления настольного компьютера в список товаров используется ссылка:
POST /product/pc
Также можно добавлять товары с другими типами продуктов как laptop, hard_disk, monitor
Чтобы выполнить POST запрос нужно выполнить такую команду:
curl -H 'Content-Type:application/json' -d '{JSON file}' 'localhost:8080/product/{ссылка на нужный тип}'
- На вход подается JSON Файл с параметрами сущности
Пример файла для сущности Pc:
{
"batchNumber":876,
"manufacturer":"ASUS",
"price":32.3,
"numOfProdInStock":10,
"formFactor":"desktop"
}
- После чего указывается ссылка, на которую отправляется запрос
Пример, чтобы выполнить POST запрос для настольного компьютера:
curl -H 'Content-Type:application/json' -d '{"batchNumber":876,"manufacturer":"ASUS","price":32.3,"numOfProdInStock":10,"formFactor":"desktop"}' 'localhost:8080/product/pc'
GET метод для вывода списка продуктов по типу:
Для этого нужно перейти на ссылку продукта и указать после нее тип:
GET /product/pc
GET /product/laptop
GET /product/hard_disk
GET /product/monitor
Чтобы вывести товар по идентификатору нужно указать id этого товара после типа:
GET /product/pc/1
GET /product/laptop/1
GET /product/hard_disk/1
GET /product/monitor/1
GET метод для вывода списка всех имеющихся продуктов с их общими полями:
Для этого нужно перейти на ссылку продукта:
GET /product
Чтобы вывести товар по идентификатору нужно указать id этого товара:
GET /product/1`
Для редактирования товара нужно сначало ознакомиться со структурой сущностей описанных выше, чтобы сформировать правильный JSON для запроса
PUT метод редактирования выбранного пользователя по идентификатору:
Ссылки для PUT запросов:
PUT /product/{тип товара}/{id}
Чтобы выполнить PUT запрос нужно выполнить такую команду:
curl -H 'Content-Type:application/json' -d '{JSON file}' 'localhost:8080/product/{ссылка на нужный тип}/{id нашего товара}'
Например, для редактирования жесткого диска с идентификатором 5 нужно выполнить команду:
curl -X PUT -H 'Content-Type:application/json' -d '{"batchNumber":123,"manufacturer":"ASUS","price":32.3,"numOfProdInStock":10,"capacity":128}}' 'localhost:8080/product/hard_disk/6'
Где неуказанные поля будут заполненны автоматически нулевыми значениями
- Ubuntu 18.04
- Java 8