珠海网站制作策划企业网站建设招标
web/
2025/10/2 11:23:51/
文章来源:
珠海网站制作策划,企业网站建设招标,wordpress社交分享国内,手机如何创建个人网站wcf:rest介绍 管理多个资源之间的关系可能是RESTful API的重要组成部分。 在这篇文章中#xff0c;我们将看到使用REST API可以管理多对多关系。 我们以一个简单的用户 / 组关系为例。 假设用户和组是两个单独的资源#xff08;例如/ users和/ groups #xff09;#xff… wcf:rest 介绍 管理多个资源之间的关系可能是RESTful API的重要组成部分。 在这篇文章中我们将看到使用REST API可以管理多对多关系。 我们以一个简单的用户 / 组关系为例。 假设用户和组是两个单独的资源例如/ users和/ groups 并且我们希望提供一种方法来管理以下几点所描述的关系 可以将一个用户添加到多个组 一个组可以包含多个用户 用户只能添加一次到组 多对多关系可以分为两种不同的类型 除实际关系外没有其他信息的关系 包含其他数据的关系。 在我们的例子中可以像一组成员状态例如 用户是在一个组主持人和一个简单的成员在另一组 在本文中我们将只讨论第一种类型的关系。 与其他数据的关系将在以后的文章中介绍。 当然没有单个正确的解决方案可以解决此问题。 下一节将介绍我获得最佳经验的方法。 之后我们将介绍一些替代解决方案。 建模子资源和GET操作 首先我们介绍两个子资源 / users / 用户ID / groups代表分配给ID为用户ID的用户的组 / groups / group-id / users代表分配给ID为group-id的组的用户 现在使用GET动词可以请求两个集合。 将用户分配到特定组 GET /groups/group-id/users 获取分配给特定用户的组 GET /users/user-id/groups 添加和删除用户 现在我们需要一种将用户添加到组的方法。 我们使用PUT动词执行此操作。 将用户添加到组 PUT /groups/group-id/users/user-id 此操作不需要请求正文。 例如这将用户32添加到组21中 PUT /groups/ 21 /users/ 32 请注意在这里我们需要问一个问题是否将用户添加到组是幂等的。 在我们的示例中该操作是幂等的用户只能添加一次到组中。 因此我们使用PUT动词。 如果分配操作不是幂等的例如可以将一个用户多次添加到一个组中我们必须使用POST而不是PUT。 在我的其他文章中您可以阅读有关幂等性以及POST和PUT之间的区别的更多信息。 或者我们也可以根据需要从/ users角度对该操作进行建模。 向用户添加组 PUT /users/user-id/groups/group-id 要从组中删除用户我们使用DELETE动词。 从组中删除用户 DELETE /groups/group-id/users/user-id 例如这将用户32从组21中删除 DELETE /groups/ 21 /users/ 32 反之亦然从/ users一侧开始 从用户删除组 DELETE /users/user-id/groups/group-id 请注意尽管我们在/ groups / group-id / users / user-id上执行PUT和DELETE操作但无需为此URI实现GET。 GET / groups / 21 / users / 32只会返回与GET / users / 32相同的结果只要用户是给定组的一部分 替代解决方案 引入单独的 另一种方法是创建一个完全独立的资源来管理用户和组之间的关系。 将用户添加到组可能如下所示 POST /group-members { groupId: 31 , userId: 23 } 为了将用户分配到给定的组 我们可以使用与先前解决方案类似的请求 GET /groups/group-id/members 但是这一次它将返回一个组成员资源列表。 这种方法增加了一些复杂性我们添加了一个可能具有其自身标识符的全新资源。 但是如果我们想向关系中添加一些其他信息例如 用户的加入日期 则该功能特别有用。 在以后的文章中我们将详细研究与其他数据之间的关系。 作为正常资源更新的一部分管理关系 另一种方法是使用标准更新操作来管理关系。 例如 PUT /users/ 23 { name : John , groups : [ { id : 42 }, { id : 43 } ] } 尽管这在某些情况下可以正常工作但我不推荐这种方法。 资源和关系经常相互独立地进行更改。 将两个操作合并在一起可能会导致各种问题。 例如从安全角度来看两个操作可能需要不同的权限。 客户端可能被允许将用户添加到组中但可能没有更新用户本身的权限。 由于存在很多关系因此这种方法的性能也非常麻烦。 因此通常最好提供单独的操作来更新资源和关系。 翻译自: https://www.javacodegeeks.com/2020/06/rest-managing-many-to-many-relations.htmlwcf:rest
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/85592.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!