RESTful / 基于 Crud 的方法来控制通常隐式的实体行为

RESTful / Crud based approach to controlling an entity behavior that is typically implicit

我正在修改 CakePHP 应用程序以使其具有可用的 API。我的意图是尽量使端点尽可能接近 RESTful / Crud 导向。虽然我有一个我不确定的用例。

我有以下添加和编辑任务的请求:

PUT       /tasks
PATCH     /tasks/:id

我正在处理的系统中任务实体的行为之一是,当执行保存或编辑时,它们会向与任务关联的受影响用户发送电子邮件。这允许围绕任务的各方更新特定任务的状态。

然而,唯一的问题是,在某些不常见的情况下,如果最终用户希望在前端发送电子邮件,他们将需要能够进行切换。

什么是正确的 RESTful / 面向 Crud 的方法来标记任务端点以不在 API 请求中触发电子邮件?

应用程序的数据库中没有电子邮件的记录,将功能绑定到任务生命周期挂钩并隐式调用是很好的。所以我并不热衷于创建一个 /emailTask​​ 端点集。似乎任务请求中的可选标志会更清晰,但如果我们开始对与任务相关的其他行为有类似的需求,则可能无法维护。

在此先感谢您的帮助!

PUT /tasks

如果您打算使用它来添加任务,请改用 POSTPUT /tasks 表示您正在覆盖所有任务。

至于 side-effects,这对我来说感觉像是自定义 HTTP header 的体面 use-case。也许像 Suppress-Notifications: ?1 ?

为什么 ?1 作为一个值?这将成为指定布尔值的新 HTTP headers 的未来默认值:

https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-header-structure-15#section-4.1.9