我是RESTful的新手,我正在尝试尽可能灵活地开发API 但我对资源协会有点困惑。
根据许多教程,常见的RESTful资源关联看起来像:
/dogs
/dogs/{id}
/owners/{owid}/dogs
但是如下的协会呢?
/owners/{owid}/dogs/{id}
它是相关的还是无用的(因为id应该是唯一的,因此不需要指定所有者)?
答案 0 :(得分:2)
转而使用以下设置。
/dogs
/dogs/{dogid}
/people
/people/{personid}
GET /people/7
{
"dogs": [
"/dogs/3",
"/dogs/5"
]
}
GET /dogs/3
{
"owners": [
"/people/7",
"/people/2"
]
}
请注意,这不再与您的概念联系起来;每只狗只有一个拥有者"和#34;每个人都拥有狗和#34; (由于在原始设计中被称为"所有者")。
通常,将URI嵌套,就像它们是文件夹结构一样,这是一种不好的做法。它会将你与你可能永远不想要的概念关系联系在一起。
答案 1 :(得分:1)
当狗具有所有者范围内的标识符时,确保它是相关的,例如所有者用于他的狗的昵称。
但您也可以使用/ {id}
的全局标识符,并且在执行时具有此特定路径的优势,服务器将确保此特定的狗实际上归{owid}
所有。 / p>
在任何情况下,使用多个路径导致同一资源不违反REST规则。最好将单个规范URL作为响应的一部分返回。
我发现http://blog.2partsmagic.com/restful-uri-design/很好地阅读了RESTful设计。