针对实体属性更改的自定义逻辑的RESTful解决方案

时间:2019-06-23 16:25:41

标签: php rest symfony api-platform.com

当实体上的特定属性发生更改时,实现附加逻辑的最佳方法(缺少一个更好的词)是什么?例如,false属性从true更改为PUT。当客户端使用已修改的字段PUT /room/{id}/syncing使用资源时,需要将HTTP请求发送到第三方API才能在其端启用/禁用此功能。

我无法选择的选项是:

  1. 用于切换属性值的自定义操作控制器(例如DELETE /room/{id}/syncingPUT /room/{id}
  2. onKernelController的控制器,用于检查请求中的值是否与数据库中的值相比发生了变化
  3. ConstrainedBox( constraints: BoxConstraints(minHeight: 200.0), child: [your child here], ) 事件上的事件侦听器,用于检测实体上属性的更改

3 个答案:

答案 0 :(得分:0)

根据standard,您的最佳选择是第二个:

PUT /room/{id}

在正文请求中,您将附加syncing的值,并在控制器中更新数据库中的值。

答案 1 :(得分:0)

尝试PATCH,与PUT不同,这意味着仅更新部分资源。如果资源代表一个实体,那么如果您只想更改该实体的一个属性,则补丁最适合。

PATCH /room/{id}

答案 2 :(得分:0)

我最终决定在我的数据访问层中为相关实体添加一个事件侦听器,并执行其他逻辑和第三方API请求onUpdateonPersist和{{1 }}。这似乎是添加此逻辑的最合适的地方,因为无论实体被修改到哪里都将执行