Реализуйте операцию POST для Subresource в пользовательском действии контроллера - PullRequest
0 голосов
/ 16 мая 2019

В текущей версии платформы API (2.4) подресурсы поддерживают только операции GET.Я пытаюсь реализовать действие POST для подресурса в своем пользовательском действии контроллера, публикуя данные в этой форме:

{
  "title": "Book title",
  "author": {
    "id": 123,
    "full_name": "Author Name""
  }
}

с сущностями Book и Author, где author - это Subresource of Book (ManyToOne).Я пытаюсь создать книгу и автора в одном запросе POST.Если автор уже существует (проверка по идентификатору), его следует обновить и связать с книгой (эта часть работает из коробки), в противном случае сначала создается на лету (этого не происходит).

У меня естьсоздал пользовательскую операцию POST, где я получаю экземпляр сущности Book в качестве параметра, со свойством Author в качестве свойства, что прекрасно работает, если Author с указанным ID уже существует.Но в случае, если Author не существует, выдается 400 ошибок до того, как запрос достигает моего пользовательского действия операции с описанием ошибки:

"hydra:description": "Item not found for \"/authors/123\".",

Как и где я могу перехватить этот запрос и сохранить Author вручную?Моя идея состояла в том, чтобы сохранить автора в действии контроллера, но, как уже упоминалось, перед выполнением моего действия выдается ошибка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...