Основные функции приложения:
- Выдача токена доступа при регистрации или авторизации.
- Возможность выхода из системы.
- Создание задач с полями "Имя" и "Прайс".
- Возврат данных о созданных задачах при предъявлении токена.
Технологии и инструменты, используемые в приложении:
- Использование Pydantic для верификации данных.
- Хранение NoSQL данных в Redis.
- Ограничение количества запросов с помощью Slowapi.
- Сохранение информации в базе данных Postgres.
- Использование SQLAlchemy для доступа к базе данных.
- Разворачивание приложения с помощью Docker Compose.
- Использование Docker Volume для хранение данных Postgres. Доступ к базе открыт для других приложений.
- Клонировать проект с Github
- Перейти в папку проекта
- Запустить приложение Docker
- Создать образ:
docker compose build - Запустить контейнер:
docker compose up -d - Остановить контейнер:
docker compose stop
- Создаем папку для приложения:
mkdir gooddelo - Переходим в эту папку:
cd gooddelo - Скачиваем файл 'docker-compose.yml':
wget -O docker-compose.yaml https://raw.githubusercontent.com/ModuleB/gooddelo/master/docker-compose.yaml - Скачиваем файл 'Dockerfile':
wget -O Dockerfile https://raw.githubusercontent.com/ModuleB/gooddelo/master/Dockerfile - Скачиваем docker образы:
docker compose pull - Запустить контейнер:
docker compose up -d - Останить контейнер:
docker compose stop
Приложение доступно по адресу:
- на локальной машине http://0.0.0.0/:8000
- на удаленном сервере http://<IP адрес сервера>:8000
Информация об эндпоинтах также доступна в Swagger по адресу /docs
Принимает JSON с данными нового пользователя:
{
"username": "string",
"password": “String1”
}
Возвращает токен доступа или ошибку если пользователь уже существует или данные не прошли валидацию:
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InN0cmlmbmciLCJleHAiOjE2ODU2OTAxNzd9.bn_523efN3TdqgU1gAZzVn-RHkEMxGL3NpcHH0YTHM4",
"token_type": "bearer"
}
Принимает JSON с данными уже зарегистрированного пользователя:
{
"username": "string",
"password": “String1”
}
Возвращает токен доступа или ошибку если пользователя с такими данными не существует.
Ожидает токен доступа в заголовке ‘Authorization’
Помечает токен недействительным, дальнейшая авторизация с ним невозможна.
Во всех методах требуется токен доступа в заголовке ‘Authorization’
Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InN0cmlmbmciLCJleHAiOjE2ODU2OTAxNzd9.bn_523efN3TdqgU1gAZzVn-RHkEMxGL3NpcHH0YTHM4
Возвращает 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"
}
]
Возвращает JSON с информацией о задаче с полученным id.
{
"id": 1,
"name": "taskname",
"price": 100.0,
"creation_date": "2023-06-04T06:59:55.105448"
}
Создает новую задачу. Ожидает JSON с данными:
{
"name": "taskname",
"price": “100”
}
Обновляет информацию о задаче с полученным id.
Ожидает JSON с данными:
{
"name": "taskname",
"price": “100”
}
Удаляет задачу с полученным id.
- user: gooddelo
- password: gooddelo
- name: gooddelo
- port: 5435
- host:
- на локальной машине: 127.0.0.1
- на удаленном сервере: < IP адрес сервера >