whereeaglesdare
@whereeaglesdare

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

Добрый день. Подскажите пожалуйста, как правильно использовать вложенные сущности в ответе REST?
Например:
Есть простой сервис по созданию задач.
Для создании задачи делаем POST запрос на эндпоинт /rest/tasks
{
    "author_id": 2 
    "task": "blah blah"
}

Можно ли вывести еще и вложенное сущности с именем пользователя? Правильный ли это подход?
например:
/rest/tasks/1
{
    "id": 1,
    "author": {
        "id": 2,
        "username": "user"
     },
     "task": "blah blah"
}

Если есть ссылки на какие-то дополнительные источники/книги по лучшим практикам, пожалуйста укажите.
  • Вопрос задан
  • 152 просмотра
Решения вопроса 1
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Не использовать. Для этого или думать уже про HAL/HATEOAS или в сторону GraphQL. REST под это дело работает, но очень плохо ложится в концепцию
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Nexen2
@Nexen2
Web backend Yii2/Symfony Coder
В Yii2 реализован такой встроенный парсер URLов:
В обычном случае при запросе на эндпоинт назад возвращается плоский жсон с данными. Автор будет числом (идентификатор). Если в URL добавить ?expand=афтор движок автоматически запросит в БД инфу о авторе и вставит её подмассивом там где был идентификатор. Ессно, список разрешенных / запрещенных для разворачивания релейшенов присутсвует.
Можно заделать и так: expand=аффтор,аффтор.комментарии, тогда кроме автора будет еще третий уровень вложенности, подмассив последних камментов автора (по умолчанию в Yii2 это 20, опять же настравивается как на бекенде, так и perpage в URL).
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы