URI 中的 REST 父 ID

yai*_*air 4 java rest uri

假设我的模型由一个实体组成,该实体通过属性Parent引用一些实体。根据 REST 原则,特定 URI 的路径段将为。ChildchildrenChild/parent/{parentId}/children/{childId}

当对 执行更新操作时Child,通常childId我只需要唯一地标识正确的Child,并认为parentId路径中的段是多余的。随着层次结构变得复杂,这种冗余会加剧。

现在我想起来了,它也可能会导致意外的行为:如果程序员不知道的话,访问具有相同childId不同的URI 可能会导致相同的行为。 当访问不相关的下parentId一个时可能会发生的情况是应该返回客户端错误代码。ChildParent

目前我认为也许不应该向 REST API 引入任何层次结构,除非它绝对直观,因为它:

  1. 使 URI(即 API)更加复杂。强化可维护性。
  2. 这种冗余可能会导致用户对访问某些 URI 的结果进行推理。
  3. 对于不知情的程序员来说,冗余可能会成为一个陷阱。

有没有办法避免这种冗余并仍然符合 REST 原则?

Dav*_*ave 6

是的,只需像这样构建您的 URL...

/children/{childId}

由于您可以在服务器端从子级推断出父级,因此没有理由在 URL 中声明它。仅当绝对需要时才应将多个资源放入 URL 中。例如,用户对评论进行投票。由于在数据库端没有正式的方法来确定,因此您将创建一个类似 的 url。

/voter/{userId}/comment/{commentId}/upvote