Skip to content

Веб-приложение для управления списком книг

License

Notifications You must be signed in to change notification settings

nrthbnd/bookshelf

Repository files navigation

Приложение для управления списком книг bookshelf

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

  • FastAPI — фреймворк для создания веб-API.
  • PostgreSQL — реляционная база данных для хранения данных.
  • gRPC — для межсервисного взаимодействия.
  • RabbitMQ — брокер сообщений для передачи данных между сервисами.
  • Alembic — инструмент для управления миграциями базы данных.
  • JWT — для аутентификации и авторизации пользователей.
  • Docker — для контейнеризации сервисов.
  • Poetry — для управления зависимостями и виртуальными окружениями.

Как запустить bookshelf:

  1. Клонировать репозиторий и перейти в него в командной строке: git clone https://github.com/nrthbnd/bookshelf.git

  2. Cоздать и активировать виртуальное окружение:

  • python -m venv venv

  • source venv/scripts/activate # Для Windows

  • source venv/bin/activate # Для Linux/MacOS

  1. Установить зависимости с помощью poetry: poetry install

  2. Заполнить файлы с переменными окружения .env и .env.rmq в соответствии с примерами .env.example и .env.rmq.example.

  3. Соберать и запустить контейнеры с помощью Docker Compose: docker-compose up --build

После выполнения этой команды будут запущены контейнеры:

  • fastapi (веб-приложение);
  • grpc (сервис для межсервисного взаимодействия);
  • db (база данных);
  • rabbitmq (брокер сообщений);
  • consumer (обработчик сообщений RabbitMQ).

Использование проекта

Веб-API

Документация Swagger для web-api доступна по адресу: http://localhost:8000/docs

gRPC-сервис

Для использования gRPC-сервиса через Postman:

  1. Выбрать тип запроса gRPC;
  2. Импортировать файл app/grpc_service/proto/book.proto;
  3. Установить адрес localhost:50051;
  4. Выбрать необходимый метод:
  • ListBooks — для получения списка всех доступных книг.
  • GetBookById — для получения информации о книге по её ID (при этом необходимо указать message, например, {"id": 1}).

Взаимодействие через RabbitMQ

При выполнении операций создания, обновления или удаления книг через FastAPI, соответствующие события отправляются в RabbitMQ. Обработчик (Consumer) слушает сообщения и записывает информацию о них в консоль.

About

Веб-приложение для управления списком книг

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published