Skip to content

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

Notifications You must be signed in to change notification settings

moduleb/Gooddelo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Python FastAPI Docker Postgres SQLAlchemy Redis JWT Poetry

Приложение 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

Watchers

Forks