Skip to content

AlexeyDer/shift_Lab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

shift_Lab

RESTfull web-service на Java c использованием библиотеки Spring.

В качестве базы данных используется in memory database H2.

Суть проекта

Это вариант магазина, который представляет возможность увидеть список продуктов, имеющихся в магазине, а также может взаимодейстовать с ним, добавляя и редактируя нужные нам продукты при помощи HTTP запросов.

Типы запросов:

  • Добавление товара
  • Редактирование товара
  • Просмотр всех существующих товаров по типу
  • Просмотр товара по идентификатору

Документация

Содержание

  1. Описание сущностей
  2. Управление
  1. Запуск

Описание сущностей

Данный проект состоит из нескольких сущностей:

  • 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 (Объем жесткого диска) 
}

Управление

Rest

В данном приложение используются такие 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

Запуск

Склонируйте репозиторий и инициализируйте wrapper:

gradle wrapper

Затем запустите сборку приложение:

./gradlew build

Запустите приложение;

./gradlew bootRun

Создание Jar файла

./gradlew bootJar

About

RESTfull web-service with Java Spring

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages