Skip to content

Repository files navigation

PythonFastAPIDockerPostgresSQLAlchemyRedisJWTPoetry

Приложение Gooddelo

Основные функции приложения:

  • Выдача токена доступа при регистрации или авторизации.
  • Возможность выхода из системы.
  • Создание задач с полями "Имя" и "Прайс".
  • Возврат данных о созданных задачах при предъявлении токена.

Технологии и инструменты, используемые в приложении:

  • Использование Pydantic для верификации данных.
  • Хранение NoSQL данных в Redis.
  • Ограничение количества запросов с помощью Slowapi.
  • Сохранение информации в базе данных Postgres.
  • Использование SQLAlchemy для доступа к базе данных.
  • Разворачивание приложения с помощью Docker Compose.
  • Использование Docker Volume для хранение данных Postgres. Доступ к базе открыт для других приложений.

Запуск приложения

На локальной машине:

  1. Клонировать проект с Github
  2. Перейти в папку проекта
  3. Запустить приложение Docker
  4. Создать образ:
    docker compose build
  5. Запустить контейнер:
    docker compose up -d
  6. Остановить контейнер:
    docker compose stop

На удаленном сервере:

  1. Создаем папку для приложения:
    mkdir gooddelo
  2. Переходим в эту папку:
    cd gooddelo
  3. Скачиваем файл 'docker-compose.yml':
    wget -O docker-compose.yaml https://raw.githubusercontent.com/ModuleB/gooddelo/master/docker-compose.yaml
  4. Скачиваем файл 'Dockerfile':
    wget -O Dockerfile https://raw.githubusercontent.com/ModuleB/gooddelo/master/Dockerfile
  5. Скачиваем docker образы:
    docker compose pull
  6. Запустить контейнер:
    docker compose up -d
  7. Останить контейнер:
    docker compose stop

Эндпоинты:

Приложение доступно по адресу:

  • на локальной машине http://0.0.0.0/:8000
  • на удаленном сервере http://<IP адрес сервера>:8000


Информация об эндпоинтах также доступна в Swagger по адресу /docs

[post] .../register

Принимает JSON с данными нового пользователя:

{
"username": "string",
"password": “String1”
}

Возвращает токен доступа или ошибку если пользователь уже существует или данные не прошли валидацию:

{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InN0cmlmbmciLCJleHAiOjE2ODU2OTAxNzd9.bn_523efN3TdqgU1gAZzVn-RHkEMxGL3NpcHH0YTHM4",
"token_type": "bearer"
}

[post] .../login

Принимает JSON с данными уже зарегистрированного пользователя:

{
"username": "string",
"password": “String1”
}

Возвращает токен доступа или ошибку если пользователя с такими данными не существует.

[post] .../logout

Ожидает токен доступа в заголовке ‘Authorization’
Помечает токен недействительным, дальнейшая авторизация с ним невозможна.


/tasks

Во всех методах требуется токен доступа в заголовке ‘Authorization’

Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InN0cmlmbmciLCJleHAiOjE2ODU2OTAxNzd9.bn_523efN3TdqgU1gAZzVn-RHkEMxGL3NpcHH0YTHM4

[get] .../tasks

Возвращает JSON с информацией обо всех задачах.

[
{
"id": 1,
"name": "taskname",
"price": 100.0,
"creation_date": "2023-06-04T06:59:55.105448"
},
{
"id": 2,
"name": "taskname1",
"price": 100.0,
"creation_date": "2023-06-04T06:59:55.105448"
}
]

[get] .../tasks/{task_id}

Возвращает JSON с информацией о задаче с полученным id.

{
"id": 1,
"name": "taskname",
"price": 100.0,
"creation_date": "2023-06-04T06:59:55.105448"
}

[post] .../tasks/{task_id}

Создает новую задачу. Ожидает JSON с данными:

{
"name": "taskname",
"price": “100”
}

[put] .../tasks/{task_id}

Обновляет информацию о задаче с полученным id.
Ожидает JSON с данными:

{
"name": "taskname",
"price": “100”
}

[delete] .../tasks/{task_id}

Удаляет задачу с полученным id.


База данных доступна вне приложения. Параметры подключения:

  • user: gooddelo
  • password: gooddelo
  • name: gooddelo
  • port: 5435
  • host:
    • на локальной машине: 127.0.0.1
    • на удаленном сервере: < IP адрес сервера >

About

FastAPI веб-сервис с авторизацией на JWT токенах и запуском в Docker контейнере.

Resources

Stars

1 star

Watchers

1 watching

Forks

Used by

Contributors

Languages