API сервис для управления задачами
API Сервис предоставляет возможность создания, обновления, удаления и получения информации о задачах.
Сервис написан на языке Python с использование библиотеки FastAPI.
Данные хранятся в базе данных MySQL.
API сервис и база данных запускаются в Docker контейнерах с использованием Docker Compose.
Данные в хранилище MySQL сохраняются после остановки или удаления контейнеров.
- код покрыт тестами
pytestи проверен с использованиемcoverage,mypy,pylint.
Для запуска сервиса требуется установленный Docker.
- Клонировать репозиторий с GitHub:
git clone git@github.com:moduleb/task_hub.gitальтернативный вариант - скачать архив проекта со страницы на GitHub
- Перейти в папку с проектом:
cd task_hub- Собираем и запускаем образ
docker compose up -d --build- Для остановки контейнера используйте команду:
docker compose down- Address: http://0.0.0.0:8000
- Документация Swagger http://0.0.0.0:8000/docs
Создание новой задачи
POST /tasks
'taskname' должно быть уникальным, остальные поля могут быть пустыми
{
"taskname": "Task1",
"description": "Create a picture",
"category": "Hobby"
}200 Successful
{
"detail": "Task created successfully"
}Получение информации о задаче
GET /tasks/{task_id}
200 Successful
{
"data": {
"id": 18,
"taskname": "Task1",
"description": "Create a picture",
"category": "Hobby",
"creation_date": "2023-12-11T19:35:46"
}
}Получение информации о всех заданиях
GET /tasks
200 Successful
{
"data": [
{
"id": 18,
"taskname": "Task1",
"description": "Create a picture",
"category": "Hobby",
"creation_date": "2023-12-11T19:35:46"
},
{
"id": 20,
"taskname": "Task2",
"description": "Create a program",
"category": "Hobby",
"creation_date": "2023-12-11T19:35:46"
}
]
}Обновление информации о задаче
PUT /tasks
'taskname' должно быть уникальным, остальные поля могут быть пустыми
{
"taskname": "Task1",
"description": "Create a picture",
"category": "Hobby"
}200 Successful
{
"detail": "Task updated successfully"
}Удаление задачи
DELETE /tasks/{task_id}
204 No Content
- 404 Not Found - задача не найдена
- 405 Method Not Allowed
- 409 Conflict - задача с таким названием уже существует
- 422 Unprocessable Entity - поле содержит недопустимые символы
- 500 Internal Server Error - внутренняя ошибка сервера