Skip to content

''Rest API Server, nginx''. Микросервисная архитектура. Студент: Куликов Кирилл. Группа: К0109-23.

License

Notifications You must be signed in to change notification settings

sma1kyyy/Rest_API_Server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Microservice-architecture-project

Rest_API_Server

Работу выполнил студент группы К0109-23, Куликов Кирилл.

Преподаватель Мацуев Александр Анатольевич.


Описание к данной работе REST API сервер Балансировщик нагрузки Упаковка приложения в Docker-контейнер Запуск проекта в Docker Compose

  1. REST API сервер Сервер должен принимать HTTP запросы на порт :6080 и реализовывать функционал CRUD (Create, Read, Update, Delete) по следующим конечным точкам:

/api/v1/contact /api/v1/group Каждая конечная точка должна обрабатывать HTTP запросы типа POST, GET, PUT, DELETE и вызывать для них соответствующие функции Create, Read, Update, Delete для объектов Contact и Group.

!!! Функционал обработки данных реализовывать не нужно !!! Все функции должны уметь просто принимать на вход структуру и возвращать в качестве ответа пустую структуру нужного типа.

(перевожу на русский язык: просто реализуем функции "заглушки")

Для реализации кода сервера можно использовать любой удобный для вас язык программирования.

Структура объекта Contact type Contact struct { ID int Username string GivenName string FamilyName string Phone []struct{ TypeID int CountryCode int Operator int Number int } Email []string Birthdate date } Структура объекта Group type Group struct { ID id Title string Description string Contacts []int } 2. Балансировщик нагрузки В качестве балансировщика используем сервер NGINX.

запросы /api/v1/contact должны распределяться между тремя запущенными контейнерами с приложением запросы /api/v1/group должны проксироваться в один контейнер с приложением Всего должны быть запущены три контейнера с приложением.

  1. Упаковка приложения в Docker-контейнер Из исходных кодов программы необходимо собрать готовые для запуска Docker контейнеры.

!!! Сборка контейнеров может отличаться в зависимости от использования типа языка (интерпретируемый или компилируемый).

  1. Запуск проекта в Docker Compose В проекте Docker Compose необходимо запустить сервис с настроенным балансировщиком NGINX и три экземпляра сервиса с контейнером приложения.

RestAPI-server

Static Badge Static Badge Static Badge Static Badge


Описание

Rest API сервер написанный на Python с использованием FastAPI. Проект был разработан в качестве лабораторной работы по дисциплине "Микросервисная архитектура" студентом 2 курса специальности 09.02.01 "Компьютерные системы и комплексы".

Используемые технологии

  • python 3.12
  • docker
  • nginx
  • fastapi
  • uvicorn
  • pydantic

Инструкция по запуску

Запуск с использованием Docker

Пересобираете и запускаете контейнеры с помощью команды:

docker-compose up --build

После у вас появится 5 контейнеров:

  • 4 экземляра сервиса
  • Балансировщик nginx

Сделайте запрос через Nginx или вставьте URL-адрес страницы

curl http://localhost/api/v1/contact/

Запуск без Docker-a

Запустите главный скрипт "main.py" и перейдите по ссылке: http://127.0.0.1:6080 В открывшейся странице выберите одну из предложенный ссылок: image

Откройте один из файлов cmd/contact.py или cmd/group.py В самом конце кода будет написано основное тело запроса. Можете убрать коментарии и наблюдать за изменениями на странице или в консоли VS Code.

Структура проекта

C:.
│   .env
│   compose.yaml
│   Dockerfile
│   README.md
│   requirements.txt
│   
├───app
│   │   models.py
│   │   __init__.py
│   │
│   └───__pycache__
│           __init__.cpython-312.pyc
│           __init__.cpython-313.pyc
│
├───cmd
│   │   main.py
│   │   __init__.py
│   │
│   ├───routers
│   │   │   contact.py
│   │   │   group.py
│   │   │   __init__.py
│   │   │
│   │   └───__pycache__
│   │           __init__.cpython-313.pyc
│   │
│   └───__pycache__
│           main.cpython-313.pyc
│           __init__.cpython-313.pyc
│
├───nginx
│       Dockerfile
│       nginx.conf
│
└───templates
        index.html

Используемые инструменты

  • Python 3.12-slim
  • HTML
  • FastAPI
  • Uvicorn
  • Pydantic
  • Docker
  • DockerHUB
  • Pygame
  • Visual Studio Code

Документация к работе

  • Вся структура работы в ветке master.
  • Основной код находится в файле main.py.

Личные ссылки

  • sma1kyyy001@gmail.com - mail.
  • sma1kyyy - telegramm.

Дальнейшая модернизация

  • Планирую доработать данный проект до идеала не из побуждения для сдачи проекта по предмету, а из личных соображений и принципов. Хочу доработать управление, графику и сам интерфейс.

About

''Rest API Server, nginx''. Микросервисная архитектура. Студент: Куликов Кирилл. Группа: К0109-23.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published