Как правильно искать вложенные ресурсы REST?

Допустим у меня есть линк:
/api/v1/m/projects/{p_id}/sprints/{s_id}/tasks/{t_id}
Поддерживаются все CRUD операции.
Но как правильно обработать отсутствие родительских ресурсов? И правильно ли будет слать в ответ сообщение с ошибкой если не будет найден родительский ресурс.

Например:
  1. Не найден проект - ошибка, проект не найден.
  2. Проект найден, не найден спринт - ошибка, спринт не найден.


У меня пока решение одно - в сервисе искать по очереди ресурсы:
  1. Найти проект по id.
  2. Найти спринт по id и проекту.
  3. Найти задание по id, проекту и спринту. (Ну или будет достаточно спринта и id).
UPDATE
Я имел в виду поиск задачи. Мне нужно пройтись по родительским ресурсам и проверить есть ли они.
Например:
Метод "Создать задание" делает по очереди:
  1. Проверка на наличие проекта по id. Если нету - исключение.
  2. Проверка на наличие спринта по id и проекту. Если нету - исключение.
  3. Создание задания с заданным спринтом.
  • Вопрос задан
  • 638 просмотров
Пригласить эксперта
Ответы на вопрос 2
AlexXYZ
@AlexXYZ
O Keep Clear O
Такие проверки надо делать фильтрами. До вызова бизнес-логики.
Ответ написан
1. Сервис выкидывает исключение типа SprintNotFoundException, ProjectNotFoundException, TaskNotFoundException
2. Обработчик исключений (глобальный или для контроллера) выдаёт ошибку 404 с подробностями в теле ответа.

Хотя обычно достаточно исключения типа NotFoundException. Подробности (что именно не найдено) - содержатся в сообщении этого исключения.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы