HTTP API:CRUD集合的许多关系

HTTP API:CRUD集合的许多关系,api,http,rest,many-to-many,Api,Http,Rest,Many To Many,我正在寻找一种将CRUD操作应用于关系集合(其中每个关系都没有元数据)的约定 在下面的场景中,我已经有了“alphas”和“beta”的基本CRUD操作。每个PUT/GET/HEAD/DELETE对的第一对包含相当简单的CRUD,用于特定“alpha”和“beta”之间的关系。我想扩展这个模式,用最少的聊天来管理大型关系集 PUT/alphas/{alpha_id}/betas/{beta_id} 在alpha和beta之间创建关系 PUT/alphas/{alpha_id}/betas?属性

我正在寻找一种将CRUD操作应用于关系集合(其中每个关系都没有元数据)的约定

在下面的场景中,我已经有了“alphas”和“beta”的基本CRUD操作。每个PUT/GET/HEAD/DELETE对的第一对包含相当简单的CRUD,用于特定“alpha”和“beta”之间的关系。我想扩展这个模式,用最少的聊天来管理大型关系集

  • PUT/alphas/{alpha_id}/betas/{beta_id}

    在alpha和beta之间创建关系

  • PUT/alphas/{alpha_id}/betas?属性={value}

    使用任意属性值在alpha和所有Beta之间创建关系

  • GET/alphas/{alpha_id}/betas

    列出与alpha相关的beta对象集合

  • GET/alphas/{alpha_id}/betas?属性={value}

    列出与alpha相关的beta对象集合,其中beta.attribute=value

  • HEAD/alphas/{alpha_id}/betas/{beta_id}

    检查α和β之间的关系

  • HEAD/alphas/{alpha_id}/betas?属性={value}

    使用任意属性值对检查alpha和beta之间的至少一种关系

  • DELETE/alphas/{alpha_id}/betas/{beta_id}

    删除alpha和beta之间的关系

  • DELETE/alphas/{alpha_id}/betas?属性={value}

    删除具有任意属性=值的alpha和所有Beta之间的所有关系


我的问题是关于第二个PUT操作的语义,这在我看来有点奇怪。它实际上是在所有beta的集合上运行的,而不是beta的子集,与alpha存在关系,如GET/HEAD/DELETE所示。。。有没有更好的方式来表达这个PUT操作?我这样做完全错了吗?

我最终解决了一个由两部分组成的调用,从检索所需Beta的集合开始:

GET /alphas/{alpha_id}/betas?attribute={value}
。。。然后将
beta_id
s列表发布到:

POST /alphas/{alpha_id}/betas