Skip to content

Latest commit

 

History

History
63 lines (43 loc) · 3.5 KB

File metadata and controls

63 lines (43 loc) · 3.5 KB

SimpleToBuy

Простое API сделанное по техническому заданию от кафедры

Использует FastAPI, SQLAlchemy и PostgreSQL.

Запуск и сборка используя Docker-compose

Зайдите в папку 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, далее:

  1. Если вы на Unix системе, либо не хотите системную установку библиотек, сначала сделайте виртуальное окружение и активируйте его:

    python3 -m venv venv
    source venv/bin/activate
  2. Установите зависимости:

    pip install -r requirements.txt;
  3. Запустите приложение:

    cd app;
    
    python app.py

Работа с приложением

После запуска приложения вы можете работать с сервером при помощи Postman или Bruno, как уже было сказано ранее.

Файлы коллекции Postman и Bruno находятся в директории collection. Для удобства есть два разных запроса для логина, в качестве админа и обычного пользователя.

Все запросы, описанные в ТЗ, разкиданы по модулям, для удобства ознакомления.

Note

При разработке я использовал Bruno, так что в Postman коллекции могут быть ошибки, которые я просто не заметил при переносе. Но основной в основной массе запросы должны работать одинаково.