HTTP API:CRUD集合的许多关系
我正在寻找一种将CRUD操作应用于关系集合(其中每个关系都没有元数据)的约定 在下面的场景中,我已经有了“alphas”和“beta”的基本CRUD操作。每个PUT/GET/HEAD/DELETE对的第一对包含相当简单的CRUD,用于特定“alpha”和“beta”之间的关系。我想扩展这个模式,用最少的聊天来管理大型关系集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?属性
在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对象集合,其中beta.attribute=valueGET/alphas/{alpha_id}/betas?属性={value}
检查α和β之间的关系HEAD/alphas/{alpha_id}/betas/{beta_id}
使用任意属性值对检查alpha和beta之间的至少一种关系HEAD/alphas/{alpha_id}/betas?属性={value}
删除alpha和beta之间的关系DELETE/alphas/{alpha_id}/betas/{beta_id}
删除具有任意属性=值的alpha和所有Beta之间的所有关系DELETE/alphas/{alpha_id}/betas?属性={value}
我的问题是关于第二个PUT操作的语义,这在我看来有点奇怪。它实际上是在所有beta的集合上运行的,而不是beta的子集,与alpha存在关系,如GET/HEAD/DELETE所示。。。有没有更好的方式来表达这个PUT操作?我这样做完全错了吗?我最终解决了一个由两部分组成的调用,从检索所需Beta的集合开始:
GET /alphas/{alpha_id}/betas?attribute={value}
。。。然后将beta_id
s列表发布到:
POST /alphas/{alpha_id}/betas