Создайте простой REST сервис, в котором используются HTTP операции GET, POST, PUT и DELETE.
Предположим, что это сервис для будущего интернет-магазина, который пока что умеет
работать только со списком продуктов. У каждого продукта есть поля: id
(уникальный идентификатор),
name
и description
.
Таким образом, json-схема продукта (обозначим её <product-json>
):
{
"id": 0,
"name": "string",
"description": "string"
}
Данные продукта от клиента к серверу должны слаться в теле запроса в виде json-а, не в параметрах запроса.
Ваш сервис должен поддерживать следующие операции:
- Добавить новый продукт. При этом его
id
должен сгенерироваться автоматическиPOST /product
- Схема запроса:
{ "name": "string", "description": "string" }
- Схема ответа:
<product-json>
(созданный продукт)
- Получить продукт по его id
GET /product/{product_id}
- Схема ответа:
<product-json>
- Обновить существующий продукт (обновляются только те поля продукта, которые были переданы в теле запроса)
PUT /product/{product_id}
- Схема запроса:
<product-json>
(некоторые поля могут быть опущены) - Схема ответа:
<product-json>
(обновлённый продукт)
- Удалить продукт по его id
DELETE /product/{product_id}
- Схема ответа:
<product-json>
(удалённый продукт)
- Получить список всех продуктов
GET /products
- Схема ответа:
[ <product-json-1>, <product-json-2>, ... ]
Предусмотрите возвращение ошибок (например, если запрашиваемого продукта не существует).
Вы можете положить код сервиса в отдельную директорию рядом с этим документом.
Продемонстрируйте работоспособность сервиса с помощью программы Postman (https://www.postman.com/downloads) и приложите соответствующие скрины, на которых указаны запросы и ответы со стороны сервиса для всех его операций.
todo
Пусть ваш продукт также имеет иконку (небольшую картинку). Формат иконки (картинки) может быть любым на ваш выбор. Для простоты будем считать, что у каждого продукта картинка одна.
Добавьте две новые операции:
- Загрузить иконку:
- Получить иконку:
Измените операции в Задании А так, чтобы теперь схема продукта содержала сведения о загруженной иконке, например, имя файла или путь:
"icon": "string"
todo
(*) В последующих домашних заданиях вам будет предложено расширить функционал данного сервиса.
Общая (сквозная) задержка прохождения для одного пакета от источника к приемнику по пути,
состоящему из
todo
Допустим, мы хотим отправить большой файл с хоста A на хост Б. Между хостами установлены три
последовательных канала соединения со следующими скоростями передачи данных:
todo
Предположим, что пользователи делят канал с пропускной способностью
todo
Пусть файл размером
todo
Рассмотрим задержку ожидания в буфере маршрутизатора. Обозначим через
- Напишите формулу для общей задержки, то есть суммы задержек ожидания и передачи.
- Опишите зависимость величины общей задержки от значения
$\dfrac{L}{R}$ .
todo