【发布时间】:2013-01-03 17:37:15
【问题描述】:
我正在寻找一种将 CRUD 操作应用于关系集合的约定(其中每个关系都没有元数据)。
在以下场景中,我已经对“alphas”和“betas”进行了基本的 CRUD 操作。每个 PUT/GET/HEAD/DELETE 对中的第一个包含相当简单的 CRUD,用于特定“alphas”和“betas”之间的关系。我想扩展此模式以管理大量关系集,并尽量减少聊天。
-
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手术?我是不是搞错了?
【问题讨论】:
标签: api http rest many-to-many