RESTful API простого мессенджера. Реализуемый функционал:
- Механизм авторизации
- Поиск пользователей
- Возможность отправлять личные сообщения
- /pm username text - личные сообщения
- text - общие сообщения в чат
- Настройки пользователя
Сервис представлен двухуровневой архитектурой:
- слой представления (директория
/api): получение и валидация данных, формирование ответов. - слой работы с данными (директория
/service): отвечает за получение/сохранение данных в базе данных.
Сервис предоставляет следующие endpoint-ы:
POST /users/create— создание пользователяGET /users/me— информация об авторизированном пользователеPOST /users/update— обновление информации о пользователеGET /users/{username}— поиск пользователей по usernamePATCH /users/add_picture— добавление изображения пользователя, доступно при авторизации пользователя
POST /auth/login— Авторизация с созданием пары JWT токеновPOST /auth/refresh— Получение новой пары JWT токенов
GET /messenger/— доступ к чату
- Личные сообщения отправляются через конструкцию: /pm username text
- При авторизации загружаются последние 20 полученных личных сообщений
- Все личные сообщения сохраняются в базу данных
git clone https://github.com:Markello93/test_smit_studio.git Для работы приложения необходимы следующие переменные окружения
(необходимо создать файл .env в корневой директории проекта)
MONGO_HOST: str = mongo_db # имя хоста(контейнера) базы данных
MONGO_PORT: int = 27017 # порт, на котором работает база данных
MONGO_DB: str = mongo_db # название MongoDB
SECRET_KEY: str # ключ для шифрования JWT токена ( openssl rand -hex 32)
ALGORITHM: str # указание алгоритма для шифрования JWT
TOKEN_LIFETIME: int # время жизни JWT access token
REFRESH_TOKEN_LIFETIME: int # время жизни JWT refresh token
MONGO_USER: str # имя пользователя MongoDB
MONGO_PASS: str # пароль пользователя MongoDB
docker-compose build
docker-compose up -d
- python 3.11
- fastapi
- mongodb
- beanie
- pydantic
- uvicorn
- python-dotenv
- poetry