【问题标题】:HTTP API: CRUD many relations of a collectionHTTP API:CRUD 一个集合的许多关系
【发布时间】: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


    【解决方案1】:

    我最终确定了一个由两部分组成的电话,首先是检索一组所需的 beta:

    GET /alphas/{alpha_id}/betas?attribute={value}
    

    ...然后将beta_ids 的列表发布到:

    POST /alphas/{alpha_id}/betas
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-14
      • 2015-12-06
      • 2013-03-14
      • 2011-09-21
      • 2017-02-26
      • 2022-01-15
      • 1970-01-01
      相关资源
      最近更新 更多