自定义操作中的API PLATFORM自定义标识符

时间:2019-11-18 12:09:19

标签: rest symfony api-platform.com

我想在自定义操作中使用自定义标识符,而不使用这样的{id}。

 @ApiResource(
   itemOperations={
     "FORGOT-PASSWORD"={
        "method"="PUT",
        "path"="/users/{forgotPasswordToken}/forgot-password",
        "controller"="App\Controller\ForgotPasswordController",
        "defaults"={"identifiedBy"="forgotPasswordToken"}
        }
    }
  )

但是我仍然遇到与“无效的标识符值或配置”相同的错误。

有什么问题吗?

1 个答案:

答案 0 :(得分:0)

这是因为Api平台具有一个Read侦听器,该侦听器会尝试检索到您的item操作的实体链接。

对于您的自定义操作,您的路径中没有诸如{id}之类的标识符来标识您的资源,因此解决方案是使用以下方法停用读取监听器:

@ApiResource(
   itemOperations={
     "FORGOT-PASSWORD"={
        "method"="PUT",
        "path"="/users/{forgotPasswordToken}/forgot-password",
        "controller"="App\Controller\ForgotPasswordController",
        "defaults"={"identifiedBy"="forgotPasswordToken"},
        "read"=false
        }
    }
  )