REST API для сервиса микроблогов на Flask с PostgreSQL базой данных.
- Аутентификация пользователей по API-ключу
- Создание и управление твитами
- Система подписок на пользователей
- Лайки твитов
- Загрузка медиафайлов (изображения)
- Полноценное API с документацией Swagger
- Python 3.8+
- Flask
- Flask-RESTX (Swagger документация)
- SQLAlchemy (ORM)
- PostgreSQL (база данных)
- Docker (контейнеризация)
- Установка с Docker (рекомендуемый способ)
# Клонировать репозиторий
git clone https://github.com/ninja152play/Flask-Twitter.git
cd Flask-Twitter
# Собрать и запустить контейнеры
docker-compose up --buildПосле запуска API будет доступно на http://localhost:5000
Документация Swagger: http://localhost:5000/docs/
- Локальная установка (без Docker)
- Установите PostgreSQL и создайте БД:
sudo -u postgres psql -c "CREATE USER admin WITH PASSWORD 'admin';"
sudo -u postgres psql -c "CREATE DATABASE twitter_db OWNER admin;"Установите зависимости:
pip install -r requirements.txtЗапустите приложение:
python main.pyПроект использует два сервиса: Web (Flask приложение)
- Порт: 5000
- Зависит от готовности БД
- Автоматически подключается к PostgreSQL
DB (PostgreSQL 13)
- Порт: 5432
- Настроены healthcheck-и
- Данные сохраняются в volumes
- Предустановленные учетные данные:
- Пользователь: admin
- Пароль: admin
- БД: twitter_db
Flask-Twitter/
├── app/ # Основное приложение
│ ├── migrations/
│ ├── __init__.py
│ ├── alembic.ini
│ ├── prod-requirements.txt # Зависимости Python для production
│ ├── models.py # Модели БД
│ ├── utils.py # Вспомогательные функции
│ └── app.py # Конфигурация Flask
├── db/
│ ├── postgresql.conf # Конфигурация PostgreSQL
│ └── Dockerfile # Конфигурация Docker PostgreSQL
├── docker-compose.yml # Конфигурация сервисов
├── dev-requirements.txt # Зависимости Python для разработки
├── Dockerfile # Конфигурация Docker app
└── main.py # Точка входа
Все запросы (кроме документации) требуют API-ключа в заголовке:
Api-Key: ваш-api-ключ
При первом обращении с новым ключом система автоматически создаст нового пользователя.
- POST /api/tweets/ - Создать твит
- GET /api/tweets/ - Получить твиты
- DELETE /api/tweets/ - Удалить твит
- POST /api/medias/ - Загрузить медиа
- POST /api/users//follow - Подписаться на пользователя
- DELETE /api/users//follow - Отписаться от пользователя
- POST /api/tweets//likes - Лайкнуть твит
- DELETE /api/tweets//likes - Убрать лайк с твита
- GET /api/users/me - Получить свой профиль
- GET /api/users/ -Получить профиль другого пользователя
Полная документация доступна в Swagger UI.
- Для production использования замените стандартные учетные данные
- Настройте правильные права доступа к volumes в Docker
- Добавьте HTTPS и другие меры безопасности