我正在寻找一种将 CRUD 操作应用于关系集合的约定(其中每个关系都没有元数据)。
在以下场景中,我已经对“alphas”和“betas”进行了基本的 CRUD 操作。每个 PUT/GET/HEAD/DELETE 对中的第一个包含相当简单的 CRUD,用于特定“alpha”和“beta”之间的关系。我想扩展这种模式来管理大量的关系集,并尽量减少喋喋不休。
PUT /alphas/{alpha_id}/betas/{beta_id}
创建 alpha 和 beta 之间的关系
PUT /alphas/{alpha_id}/betas?attribute={value}
使用任意属性值在 alpha 和所有beta之间创建关系
GET /alphas/{alpha_id}/betas
列出与 alpha 相关的 beta 对象集合
GET /alphas/{alpha_id}/betas?attribute={value}
列出与 alpha 相关的 beta 对象集合,其中 beta.attribute=value
HEAD /alphas/{alpha_id}/betas/{beta_id}
检查 alpha 和 beta 之间的关系
HEAD /alphas/{alpha_id}/betas?attribute={value}
使用任意属性值对检查 alpha 和 beta 之间的至少一个关系
DELETE /alphas/{alpha_id}/betas/{beta_id}
删除 alpha 和 beta 之间的关系
DELETE /alphas/{alpha_id}/betas?attribute={value}
删除具有任意属性=值的 alpha 和所有 beta 之间的所有关系
我的问题是关于第二个 PUT 操作的语义,这对我来说有点奇怪。它实际上是在所有 beta 集上运行的,而不是与alpha存在关系的 beta 子集,如 GET/HEAD/DELETE 中所见......有没有更好的方法来表达这个 PUT 操作?我对这一切都错了吗?