Простое API сделанное по техническому заданию от кафедры
Использует FastAPI, SQLAlchemy и PostgreSQL.
Зайдите в папку deploy и выполните команды:
docker-compose build;
docker-compose upПосле чего вы можете работать с сервером при помощи Postman или Bruno, вставив в качестве {{host}} значение http://localhost:8080, либо перейти по адресу http://localhost:8080/docs для просмотра документации API, логина в систему и вызовов endpoint'ов от туда.
Note
Стандартный вход OAuth2 работает по другому пути /login_oauth2 чтобы не пересекаться с ручкой логина /login, предусмотренной ТЗ,
и также для того, чтобы в swagger работал логин, потому что по ТЗ отправляется email вместо username и отправка происходит в json вместо формы
Для запуска приложения без докера, необходимо иметь установленный Python 3.10+ и PostgreSQL.
Important
PostgreSQL должен иметь БД с именем simple_to_buy и пользователем postgres с паролем postgres, либо
вы должны установить переменную окружения DATABASE_URL с DSN адресом вашей базы данных, с использованием асинхронного движка(asyncpg).
Как пример: DATABASE_URL='postgresql+asyncpg://user:password@simple-to-buy-db:5432/simple_to_buy'
Первым делом зайдите в папку project, далее:
-
Если вы на Unix системе, либо не хотите системную установку библиотек, сначала сделайте виртуальное окружение и активируйте его:
python3 -m venv venv source venv/bin/activate -
Установите зависимости:
pip install -r requirements.txt; -
Запустите приложение:
cd app; python app.py
После запуска приложения вы можете работать с сервером при помощи Postman или Bruno, как уже было сказано ранее.
Файлы коллекции Postman и Bruno находятся в директории collection.
Для удобства есть два разных запроса для логина, в качестве админа и обычного пользователя.
Все запросы, описанные в ТЗ, разкиданы по модулям, для удобства ознакомления.
Note
При разработке я использовал Bruno, так что в Postman коллекции могут быть ошибки, которые я просто не заметил при переносе. Но основной в основной массе запросы должны работать одинаково.