Restful 资源协会?
Restful resource associations?
我是 RESTful 的新手,我正在尝试开发一个尽可能灵活的 API
但我对资源关联有点困惑。
根据许多教程,常见的 RESTful 资源关联如下所示:
/dogs
/dogs/{id}
/owners/{owid}/dogs
但是像这样的关联呢:
/owners/{owid}/dogs/{id}
它是相关的还是无用的(因为 id 应该是唯一的,所以不需要指定所有者)?
当狗在主人的范围内有标识符时肯定是相关的,例如主人给他的狗起的昵称。
但是您也可以为 {id}
使用 a/the 全局标识符,并且在执行该特定路径时具有优势,即服务器将确保该特定狗实际上属于 [=11] =].
在任何情况下,有多条路径通向同一资源并不违反 REST 规则。将 return 单个规范 URL 作为响应的一部分是一种很好的做法。
我发现 http://blog.2partsmagic.com/restful-uri-design/ 一本关于 RESTful 设计的好书。
改为进行以下设置。
/dogs
/dogs/{dogid}
/people
/people/{personid}
GET /people/7
{
"dogs": [
"/dogs/3",
"/dogs/5"
]
}
GET /dogs/3
{
"owners": [
"/people/7",
"/people/2"
]
}
请注意这如何不再将您与 "Every dog has exactly one owner" 和 "Every person owns dogs" 的概念联系起来(因为在您的原始设计中被称为 "owner")。
一般来说,将 URI 嵌套为文件夹结构是一种不好的做法。它会将您与您可能不想要永久的概念关系联系起来。
我是 RESTful 的新手,我正在尝试开发一个尽可能灵活的 API 但我对资源关联有点困惑。
根据许多教程,常见的 RESTful 资源关联如下所示:
/dogs
/dogs/{id}
/owners/{owid}/dogs
但是像这样的关联呢:
/owners/{owid}/dogs/{id}
它是相关的还是无用的(因为 id 应该是唯一的,所以不需要指定所有者)?
当狗在主人的范围内有标识符时肯定是相关的,例如主人给他的狗起的昵称。
但是您也可以为 {id}
使用 a/the 全局标识符,并且在执行该特定路径时具有优势,即服务器将确保该特定狗实际上属于 [=11] =].
在任何情况下,有多条路径通向同一资源并不违反 REST 规则。将 return 单个规范 URL 作为响应的一部分是一种很好的做法。
我发现 http://blog.2partsmagic.com/restful-uri-design/ 一本关于 RESTful 设计的好书。
改为进行以下设置。
/dogs
/dogs/{dogid}
/people
/people/{personid}
GET /people/7
{
"dogs": [
"/dogs/3",
"/dogs/5"
]
}
GET /dogs/3
{
"owners": [
"/people/7",
"/people/2"
]
}
请注意这如何不再将您与 "Every dog has exactly one owner" 和 "Every person owns dogs" 的概念联系起来(因为在您的原始设计中被称为 "owner")。
一般来说,将 URI 嵌套为文件夹结构是一种不好的做法。它会将您与您可能不想要永久的概念关系联系起来。