Лабораторная работа №1
Как запустить лабораторную работу
- Переносим в Visual Studia Code нашу папку с docker-compose.yml и остальными файлами.
- Открываем сочитанием Ctrl + Shift + ` терминал.
- Вводим туда команду docker-compose up --build (Нужно подождать пока все пакеты загрузятся). При вводе команды нужно убедится что Docker Desktop запущен.
- Далее в Docker Desktop мы можем запустить через порт наш сервис, например запустим порт 5001 и вывод будет вот таким:
{
"category": "processor",
"name": "Intel Core i5",
"price": 25000,
"uuid": "comp-1"
},
{
"category": "graphics_card",
"name": "NVIDIA RTX 4070",
"price": 60000,
"uuid": "comp-2"
}
- Как тестировать и пользоваться данной программой будет в пункте Тесты.
Какие технологии использовали
- Docker - контейнеризация приложений
- Docker Compose - оркестрация многоконтейнерного приложения
- Nginx - API gateway и reverse proxy
- Flask - веб-фреймворк для создания REST API
- Python - основной язык программирования
- Requests - библиотека для HTTP-запросов
- Postman - тестирование запросов программного продукта
Что она делает
Это веб-приложение для сборки компьютеров, построенное на микросервисной архитектуре. Оно состоит из двух основных сервисов: один управляет комплектующими (процессоры, видеокарты, память), а другой отвечает за сборки ПК.
Пользователь может создавать сборки компьютеров, добавляя в них различные компоненты по их идентификаторам. Когда запрашивается информация о конкретной сборке, система автоматически обращается к сервису комплектующих и подгружает полные данные о всех компонентах - их названия, категории и цены.
Все запросы проходят через единый шлюз на Nginx, который перенаправляет их к нужному микросервису.
Тесты
Для тестирования программы использовался Postman
Нам нужно проверить 5 запросов у двух сервисов: component и build. Виды запросов:
- GET - получить список всех компонентов или сборок ПК
- GET /{uuid} - получить элемент списка компонентов или сборок ПК по его id (в случии вызова сборки ПК так же будет выводится подробная информация о комплектующем)
- POST - Создать элемент компонентов или сборок ПК
- PUT /{uuid} - обновить элемент списка компонентов или сборок ПК по его id
- DELETE /{uuid} - удалить элемент списка компонентов или сборок ПК по его id
Для начала тестирования нам нужно:
- Создать новую коллекцию(у нас их будет 2: build, component)
- Добавить туда 5 requast и каждому из них присвоить соответствующие запросы
- Далее в URL нужно добавить наш порт, и в зависимости он запроса, нужно добавить id в таком формате: http://localhost:5002/id
- Если нужно изменить или создать элемент то нажимаеем на пункт Body, далее нажимаем на raw и после добавляем или изменяем запись в json формате
Разберем на примере build все запросы:
- Post
-
Правильный запрос
{ "name": "PC1", "component_id": [ "comp-1" ] }Результат: 200 OK
-
Неправильный запрос URL: http://localhost:5002/
{ "component_id": [ "comp-1" ] }Результат: Ошибка 500 (INTERNAL SERVER ERROR)
- Get
-
Правильный запрос
{ "components": [ "comp-1" ], "name": "PC1", "uuid": "e32976c4-9e9d-44c8-bcf1-81b3238d23f0" }Результат: 200 OK
- Get /{uuid}
-
Правильный запрос
URL: http://localhost:5002/e32976c4-9e9d-44c8-bcf1-81b3238d23f0
{ "components": [ "comp-1" ], "components_details": [ { "category": "processor", "name": "Intel Core i5", "price": 25000, "uuid": "comp-1" } ], "name": "PC1", "uuid": "e32976c4-9e9d-44c8-bcf1-81b3238d23f0" }Результат: 200 OK
-
Неправильный запрос
URL: http://localhost:5002/e32
Результат: Ошибка 404 NOT FOUND
- PUT /{uuid}
-
Правильный запрос
URL: http://localhost:5002/e32976c4-9e9d-44c8-bcf1-81b3238d23f0
{ "components": [ "comp-2" ], "name": "PC3" }Результат: 200 OK
-
Неправильный запрос
URL: http://localhost:5002/e32
Результат: Ошибка 404 NOT FOUND
- DELETE /{uuid}
-
Правильный запрос
URL: http://localhost:5002/e32976c4-9e9d-44c8-bcf1-81b3238d23f0
Результат: 200 OK
-
Неправильный запрос
URL: http://localhost:5002/e32
Результат: Ошибка 404 NOT FOUND
Видеоотчет
https://rutube.ru/video/private/6e4e75bb7d1ede9f1fa45627d33fa73c/?p=QtwDp85zXK3jVJ77Tl3azw