假设我们有一个包含服务器上用户列表的实体,我们希望将其公开为 rest。正确的做法是什么?
我的第一个猜测是这样的:
/entity/1/user/5
我们可以使用 PUT 进行更新,使用 DELETE 进行删除吗?
这样对吗?我去了维基百科,那里谈论休息,他们的观点是一切都只有 1 层深。所以也许他们希望您使用 PUT/POST 并提供整个 JSON 图并一次性更新整个内容?
最佳答案
您的示例是一种完全有效的方法。
然而,在许多情况下,User
可以存在于 entity
的上下文之外。我倾向于孤立地识别资源,例如:
/entity/1
/user/5
要查看与我将使用的实体关联的用户:
/entity/1/users
可以通过 POST 用户来添加用户,
POST /entity/1/users
<User>
...
</User>
删除一个用户会是
DELETE /User/5
可以使用 PUT 来更新或创建用户
PUT /User/6
移除用户和实体之间的关联需要一点创造力。你可以做
DELETE /Entity/1/User/5
按照你的建议,或者类似的
DELETE /Entity/1/UserLink?UserId=5
或者只是
DELETE /Entity/1/Users?UserId=5
对于您的 API 用户来说,您的 URI 是什么样子实际上并不是很重要。为了您自己的理智保持一致是件好事,选择易于使用您的服务器框架进行分派(dispatch)的方案是件好事,但重要的不是您的 URI 看起来像什么,而是您用它们做什么。
关于web-services - 在 REST 中处理添加/删除多对多关系的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4521452/