Этот проект представляет собой API, разработанное на фреимворке FastAPI. Данные хранятся в реляционной базе данных PostgreSQL. Для запросов к базе данных я использовал SQLAlchemy, что в разы сократило мою работу над проектом. Для тестирования своего API, я использовал Pytest, потому что Unittest на мой взгляд довольно устаревшее решение для тестирования приложения.
-
FastAPI: Современный веб-фреймворк для создания API на Python. Быстрый и простой в использовании, с поддержкой асинхронного программирования.
-
PostgreSQL: Реляционная база данных, которая обеспечивает надежное и мощное хранилище для данных приложения.
-
SQLAlchemy: ORM (Object-Relational Mapping) библиотека для Python, которая упрощает работу с базами данных, позволяя разработчикам использовать Python-объекты вместо SQL-запросов.
-
Pytest: Бибилиотека для тестирования в Python, который позволяет писать простые и масштабируемые тесты для вашего приложения.
-
Docker и Docker Compose: Контейнеризация моего API, написанны два файла Dokerfile, в котором хранится образ проекта с запуском приложения, а также docker-compose.yaml, в котором есть образ базы данных PostgreSQL
Для запуска приложения в контейнере Docker, выполните следующие команды:
-
Склонируйте репозиторий:
git clone https://github.com/yoda007008/posts_api.git
-
Примените миграции (если для Docker контейнера, то введите эту команду в bash контейнера, а не проекта):
alembic upgrade head
-
Сборка Docker образа:
docker-compose build . -
Запуск контейнера:
docker-compose up
-
Остановка контейнера:
docker-compose down
Теперь приложение будет доступно по адресу http://localhost:9000/docs. Если запускать через uvicorn app.main:app --reload, то по адресу http://localhost:8000/docs