在自定义控制器操作中为子资源实现POST操作

时间:2019-05-16 09:20:38

标签: symfony4 api-platform.com

在当前版本的API平台(2.4)中,子资源仅支持GET操作。我正在尝试通过以下形式发布数据,以在我的自定义控制器操作中为子资源实现POST操作:

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

具有Book和Author实体,其中author是Book的子资源(ManyToOne)。我正在尝试在单个POST请求中创建Book and Author。如果“作者”已经存在(按ID进行检查),则应对其进行更新并与该书链接(这部分内容是开箱即用的),否则首先要即时创建(这没有)。

我创建了自定义POST操作,在该操作中,我获得Book实体的实例作为参数,并以Author作为属性,在具有提供的ID的Author已经存在的情况下,它可以正常工作。但是如果作者不存在,则在请求命中具有错误描述的自定义操作之前,将引发400错误:

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

如何以及在何处拦截此请求并手动保留作者?我的想法是坚持将作者保留在Controller Action中,但是如上所述,在我的操作被击中之前抛出了错误。

0 个答案:

没有答案
相关问题