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