我正在构建一个简单的REST api,该API具有用户和社区。 p>
User
实体与Community
有很多关系。
用户可以在多个社区中拥有成员身份,而社区可以有多个用户。
用于创建用户并将其分配给特定社区的端点如下:
POST /communities/5/users
当我要删除用户并将其与特定社区解除关联时,请使用以下方法:
DELETE /communities/5/users/8
问题是,如何设计端点以使用户加入社区并以适当的方式离开社区(不删除用户)?
答案 0 :(得分:1)
由于用户可以属于许多社区,也可以不属于任何社区,因此将用户视为独立于社区的资源是有意义的。通过POST /users
创建它们,并通过DELETE /users/:id
从系统中将它们删除。
与社区相同。通过POST /communities
创建它们,并通过DELETE /communities/:id
删除它们。
现在,您可以通过POST /communities/:id/users
将用户添加到社区,其中有效负载包含要添加的用户的ID。您可以通过DELETE communities/:id/users/:userid
从社区中删除用户。
每个社区实体都可以具有指向URL的链接以获取其用户(/communities/:id/users
),也可以将用户包括在实体本身中。
或者,您可以拥有membership
资源来链接社区及其用户。如果成员资格本身具有社区标识和用户标识以外的其他属性,这可能会很有趣。
答案 1 :(得分:1)
问题是,如何设计端点以使用户加入社区并以适当的方式离开社区(不删除用户)?
您将如何使用网站?
例如:您可能决定用户可以选择自己的组成员身份。因此,您将为用户提供一个描述他们所属组的网页。也许该页面包含一个带有一堆复选框的表单,用户可以取消选中他们不想再属于的组的复选框,然后提交表单。
对于REST API,请执行相同的操作。