Files
DAS_2025_1/shanygin_alexandr_lab_3/README.md

174 lines
6.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Лабораторная работа №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