Skip to content

Latest commit

 

History

History
223 lines (150 loc) · 5.02 KB

File metadata and controls

223 lines (150 loc) · 5.02 KB

PythonDockerFastAPIMySQL

Task Hub API

API сервис для управления задачами

Содержание

Описание

API Сервис предоставляет возможность создания, обновления, удаления и получения информации о задачах.

Сервис написан на языке Python с использование библиотеки FastAPI. Данные хранятся в базе данных MySQL.
API сервис и база данных запускаются в Docker контейнерах с использованием Docker Compose.
Данные в хранилище MySQL сохраняются после остановки или удаления контейнеров.

Особенности:

  • код покрыт тестами pytest и проверен с использованием coverage, mypy, pylint.

Установка и запуск

Для запуска сервиса требуется установленный Docker.

  1. Клонировать репозиторий с GitHub:
git clone git@github.com:moduleb/task_hub.git

альтернативный вариант - скачать архив проекта со страницы на GitHub

  1. Перейти в папку с проектом:
cd task_hub
  1. Собираем и запускаем образ
docker compose up -d --build
  1. Для остановки контейнера используйте команду:
docker compose down

API Endpoints

Create

Создание новой задачи

Request

POST /tasks

'taskname' должно быть уникальным, остальные поля могут быть пустыми

  {
    "taskname": "Task1",
    "description": "Create a picture",
    "category": "Hobby"
  }

Response

200 Successful

{
  "detail": "Task created successfully"
}

Get one

Получение информации о задаче

Request

GET /tasks/{task_id}

Response

200 Successful

{
  "data": {
    "id": 18,
    "taskname": "Task1",
    "description": "Create a picture",
    "category": "Hobby",
    "creation_date": "2023-12-11T19:35:46"
  }
}

Get all

Получение информации о всех заданиях

Request

GET /tasks

Response

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"
    }
  ]
}

Update

Обновление информации о задаче

Request

PUT /tasks

'taskname' должно быть уникальным, остальные поля могут быть пустыми

  {
    "taskname": "Task1",
    "description": "Create a picture",
    "category": "Hobby"
  }

Response

200 Successful

{
  "detail": "Task updated successfully"
}

Delete

Удаление задачи

Request

DELETE /tasks/{task_id}

Response

204 No Content


Errors

  • 404 Not Found - задача не найдена
  • 405 Method Not Allowed
  • 409 Conflict - задача с таким названием уже существует
  • 422 Unprocessable Entity - поле содержит недопустимые символы
  • 500 Internal Server Error - внутренняя ошибка сервера