Это асинхронное приложение на FastAPI, использующее RabbitMQ для обработки сообщений и PostgreSQL в качестве базы данных. Приложение поддерживает аутентификацию с помощью JWT токенов.
Проект представляет собой RESTful API, который позволяет создавать, читать, обновлять и удалять изображения. API использует RabbitMQ для обработки сообщений и PostgreSQL в качестве базы данных.
.
├── main.py # Основной код приложения
├── api/ # Определение маршрутов API
├── auth/ # Аутентификация
├── certs/ # Место хранения публичного и приватного ключей
├── core/ # Конфигурации настройки приложения и модели базы данных
├── rabbitmq/ # Логика работы с RabbitMQ
├── alembic/ # Миграции базы данных Alembic
│ └── versions/ # Версии миграций
├── Dockerfile # Конфигурация Docker для приложения
└── docker-compose.yml # Конфигурация Docker Compose для запуска приложения
Для запуска проекта необходимо выполнить следующие действия:
Если виртуальный хост еще не создан, необходимо создать его вручную:
- Подключитесь к RabbitMQ Management UI (доступен по адресу
http://localhost:15672
). - Войдите с использованием учетных данных.
- Перейдите на вкладку "Admin".
- В разделе "Virtual Hosts" нажмите "Add a new virtual host".
- Введите имя виртуального хоста и нажмите "Add virtual host".
После запуска приложения необходимо зайти в RabbitMQ.
- Подключитесь к RabbitMQ Management UI (доступен по адресу
http://localhost:15672
). - Вйдите с использованием учетных данных которые вы указали в файле
docker-compose.yml
.
Для создания таблиц в базе данных необходимо выполнить следующую команду из папки fastapi-application:
alembic upgrade head
миграция уже находится в папке alembic/versions
Для генерации токенов необходимо выполнить следующую команду из папки fastapi-application:
# Генерация RSA приватного ключа
openssl genrsa -out jwt-private.pem 2048
# Генерация RSA публичного ключа
openssl rsa -in jwt-private.pem -outform PEM -pubout -out jwt-public.pem
ключи должны находится в папке fastapi-application/certs
Для запуска приложения используйте Docker Compose. Перейдите в папку с проектом и выполните следующую команду:
docker-compose up --build
- GET запросы Получить список всех изображений:
GET http://0.0.0.0:8000/api/v1/get_all
Получить изображение по ID: GET http://0.0.0.0:8000/api/v1/get/
- POST запросы Создать новое изображение: POST http://0.0.0.0:8000/api/v1/create/
Требуется передать в теле запроса:
json { "title": "string", "file_path": "string", "resolution": "string", "size": 0 }
- PUT запрос Обновить изображение:
PUT http://0.0.0.0:8000/api/v1/update/ Требуется передать в теле запроса:
json { "title": "new title", "file_path": "home", "resolution": "800x600", "size": 1024 }
DELETE запрос
Удалить изображение: DELETE http://0.0.0.0:8000/api/v1/delete/
- Аутентификация
Создать пользователя: POST http://0.0.0.0:8000/api/v1/register Требуется передать логин и пароль.
Выпуск токена: POST http://0.0.0.0:8000/api/v1/auth/login Требуется передать логин и пароль.