# Лабораторная работа №3: REST API, шлюз и синхронный обмен данными между микросервисами ## Задание реализовать два микросервиса связанные единой базой и сущностями один ко многим - Первый микросервис user предоставляет методы для регистрации авторизации и выхода пользователей - Второй микросервис реализует сущность устройства, которые связанные с пользователями связью многие ко многим ### Реализация Оба микросервиса написаны на fastapi и развернуты на вебсервере uvicorn. В самом докере развертывание осущетсвляется через веб сервер nginx, который осуществляет роль прокси, прослушивая 80 http порт и перенправляя запрос на тот или иной микросервис Для корректной работы swagger-а необходимо перенести location из nginx.conf в fastapi, чтобы ему был известен корневой путь, для построения документации `app = FastAPI( title="Smart lock", root_path="/devices" )` `location /devices/ { proxy_pass http://device_service:8001; }` ### Развертывание В корневую папку добавляем файл .env, где указываем значение переменных среды **Пример файла:** `DB_HOST = localhost DB_PORT = 5432 DB_NAME = DB_USER = postgres DB_PASS = 1234 SECRET_AUTH_TOKEN = 1 SECRET_VERIFICATE_TOKEN = 1 SECRET_DEVICE_AUTH_TOKEN = 1 DEVICE_START_COUNTER = 1 STATIC_URL = https://testapi.danserver.keenetic.name/static/` Далее указываем: docker-compose up --build [Видео](https://disk.yandex.ru/d/BGenDWYY6tIGaw)