【问题标题】:Restful resource associations?宁静的资源关联?
【发布时间】:2015-01-06 18:35:45
【问题描述】:

我是 RESTful 新手,我正在尝试开发尽可能灵活的 API 但我对资源关联有点困惑。

根据许多教程,常见的 RESTful 资源关联如下所示:

/dogs
/dogs/{id}
/owners/{owid}/dogs

但是像这样的关联呢:

/owners/{owid}/dogs/{id}

它是相关的还是没用的(因为 id 应该是唯一的,所以不需要指定所有者)?

【问题讨论】:

标签: rest uri restful-architecture


【解决方案1】:

改为进行以下设置。

/dogs
/dogs/{dogid}
/people
/people/{personid}

GET /people/7
{
    "dogs": [
        "/dogs/3",
        "/dogs/5"
    ]
}

GET /dogs/3
{
    "owners": [
        "/people/7",
        "/people/2"
    ]
}

请注意,这不再将您与“每只狗只有一个主人”和“每个人都拥有狗”的概念联系在一起(因为在您的原始设计中被称为“主人”)。

通常,将 URI 嵌套为文件夹结构是一种不好的做法。它会将您与您可能永远不想要的概念关系联系起来。

【讨论】:

    【解决方案2】:

    当然,当狗在所有者范围内具有标识符时,它是相关的,例如。主人为他的狗使用的昵称。

    但您也可以使用 {id} 的全局标识符,并在执行此特定路径时具有优势,即服务器将确保此特定狗实际上归 {owid} 所有。

    在任何情况下,拥有多个通往同一资源的路径并不违反 REST 规则。将单个规范 URL 作为响应的一部分返回是一种很好的做法。

    我发现http://blog.2partsmagic.com/restful-uri-design/ 是一本关于 RESTful 设计的好书。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-30
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-15
      • 2012-08-21
      相关资源
      最近更新 更多