Java Kanban - это бэкенд-система для управления задачами, реализующая менеджер задач и HTTP-сервер.
Система поддерживает три типа задач: обычные задачи(Task), эпики(Epic) и подзадачи(SubTask).
- Создание, обновление и удаление задач всех типов
- Хранение истории просмотров задач
- Очистка всей истории просмотров
- Обработка ошибок при создании и обновлении задач
- Получение списков всех задач/эпиков/подзадач
- Поиск задач по ID
- Получение всех подзадач конкретного эпика
- Получение задач в порядке приоритета (по времени начала)
- Java - основной язык программирования
- JUnit 5 - фреймворк для модульного тестирования
- Gson - библиотека для работы с JSON
Система поддерживает следующие форматы для полей startTime:
DateTimeFormatter.ISO_LOCAL_DATE_TIME-2023-10-15T14:30:00DateTimeFormatter.ISO_DATE_TIME-2023-10-15T14:30:00.000+03:00yyyy-MM-dd HH:mm:ss.SSS-2023-10-15 14:30:00.000yyyy-MM-dd HH:mm:ss-2023-10-15 14:30:00dd.MM.yyyy HH:mm:ss-15.10.2023 14:30:00
Система использует следующие HTTP коды состояния для обработки запросов:
| Код | Описание |
|---|---|
| 200 | Успешный запрос (GET, HEAD, DELETE, OPTIONS) |
| 201 | Успешное создание или обновление ресурса (POST) |
| 400 | Неверный формат JSON или отсутствуют обязательные поля, неверный формат времени, id не число или меньше 0 |
| 404 | Задача не найдена или неверный путь |
| 405 | Метод не разрешен для ресурса |
| 406 | Пересечение временных интервалов с существующими задачами |
| 500 | Внутренняя ошибка сервера |
| Метод | Путь | Действие | Коды ответа |
|---|---|---|---|
| HEAD | /tasks или /tasks/{id} |
Получить заголовки | 200, 404 |
| GET | /tasks |
Получить все задачи | 200 |
| GET | /tasks/{id} |
Получить задачу по ID | 200, 404 |
| POST | /tasks |
Создать новую задачу | 201, 400, 406 |
| DELETE | /tasks |
Удалить все задачи | 200 |
| DELETE | /tasks/{id} |
Удалить задачу по ID | 200, 404 |
| OPTIONS | /tasks или /tasks/{id} |
Получить разрешенные методы | 200 |
{
"taskId": 0, // 0 - для создания, >0 - для обновления (обязательное)
"title": "string", // обязательное поле
"description": "string", // обязательное поле
"status": "NEW|IN_PROGRESS|DONE", // обязательное поле
"duration": 10, // продолжительность в минутах (опционально)
"startTime": "1970-01-01T00:00:00.000" // дата и время ISO (опционально)
}| Метод | Путь | Действие | Коды ответа |
|---|---|---|---|
| HEAD | любой путь | Получить заголовки | 200, 404 |
| GET | /epics |
Получить все эпики | 200 |
| GET | /epics/{id} |
Получить эпик по ID | 200, 404 |
| GET | /epics/{id}/subtasks |
Получить все подзадачи эпика | 200, 404 |
| POST | /epics |
Создать новый эпик | 201, 400, 406 |
| DELETE | /epics |
Удалить все эпики | 200 |
| DELETE | /epics/{id} |
Удалить эпик по ID | 200, 404 |
| DELETE | /epics/{id}/subtasks |
Удалить все подзадачи эпика | 200, 404 |
| OPTIONS | любой путь | Получить разрешенные методы | 200 |
{
"taskId": 0, //0 - для создания, >0 - для обновления (обязательное)
"title": "string", // обязательное поле
"description": "string", // обязательное поле
"status": "NEW|IN_PROGRESS|DONE", // только для чтения
"subtasks": [1, 2, 3], // только для чтения
"duration": 10, // только для чтения
"startTime": "1970-01-01T00:00:00.000" // только для чтения
}| Метод | Путь | Действие | Коды ответа |
|---|---|---|---|
| HEAD | /subtasks или /subtasks/{id} |
Получить заголовки | 200, 404 |
| GET | /subtasks |
Получить все подзадачи | 200 |
| GET | /subtasks/{id} |
Получить подзадачу по ID | 200, 404 |
| POST | /subtasks |
Создать новую подзадачу | 201, 400, 406 |
| DELETE | /subtasks |
Удалить все подзадачи | 200 |
| DELETE | /subtasks/{id} |
Удалить подзадачу по ID | 200, 404 |
{
"taskId": 0, // 0 - для создания, >0 - для обновления (обязательное)
"title": "string", // обязательное поле
"description": "string", // обязательное поле
"status": "NEW|IN_PROGRESS|DONE", // обязательное поле
"epicId": 123, // обязательное поле - ID родительского эпика
"duration": 10, // продолжительность в минутах (опционально)
"startTime": "1970-01-01T00:00:00.000" // дата и время ISO (опционально)
}| Метод | Путь | Действие | Коды ответа |
|---|---|---|---|
| HEAD | /history |
Получить заголовки | 200 |
| GET | /history |
Получить историю просмотров | 200 |
| OPTIONS | /history |
Получить разрешенные методы | 200 |
| Метод | Путь | Действие | Коды ответа |
|---|---|---|---|
| HEAD | /prioritized |
Получить заголовки | 200 |
| GET | /prioritized |
Получить отсортированный список задач | 200 |
| OPTIONS | /prioritized |
Получить разрешенные методы | 200 |
Проект включает модульные тесты с использованием JUnit 5 для проверки функциональности менеджера задач и HTTP-сервера.