首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在REST中表示多对一关系

在REST中表示多对一关系
EN

Stack Overflow用户
提问于 2013-10-30 07:24:58
回答 2查看 438关注 0票数 1

我正在创建一个UML,它包含以下RESTful -ish图中所示的资源。如(括号之间的)重数所示,有四个一对多关系。

我目前定义了以下GET方法:

代码语言:javascript
复制
GET /farmers
GET /farmers/[farmer_id]
GET /farms
GET /farms/[farm_id]
GET /llamas
GET /llamas/[llama_id]
GET /events

我正在尝试决定什么是访问这些关系的最好和最RESTful的方式,以及访问与Farm和Farmers相关的事件(通过骆驼)。所有这些关系都将通过超媒体链接提供。到目前为止,我提出的两个选择是:

多个URI

代码语言:javascript
复制
GET /farmers/[farmer_id]/farms
GET /farmers/[farmer_id]/llamas
GET /farmers/[farmer_id]/events
GET /farms/[farm_id]/farmer
GET /farms/[farm_id]/llamas
GET /farms/[farm_id]/events
GET /llamas/[llama_id]/farm
GET /llamas/[llama_id]/farmer
GET /llamas/[llama_id]/events

单个URI和过滤

代码语言:javascript
复制
GET /farms?farmer=[farmer_id]
GET /llamas?farmer=[farmer_id]
GET /events?farmer=[farmer_id]
GET /farmers/[farm_farmer_id]
GET /llamas?farm=[farm_id]
GET /events?farm=[farm_id]
GET /farms/[llama_farm_id]
GET /farmers/[llama_farmer_id]
GET /events?llama=[llama_id]

对于REST,这两种方法都是首选的吗?或者我可以选择我最喜欢的一种?

EN

回答 2

Stack Overflow用户

发布于 2013-10-30 12:52:07

从REST的角度来看,这真的无关紧要,只要提供到客户端的链接即可。

从实现的角度来看,如果您正在使用一个使用特定约定进行自动链接关系发布的框架,那么您可能希望选择其中一个选项。例如,Spring Data REST为您提供了上面定义的开箱即用的多URI方案。因此,对于您来说,简单地遵循该约定将会减少很多工作。

票数 0
EN

Stack Overflow用户

发布于 2013-10-30 14:10:08

正如Jonathon W所说,从REST的角度来看,这并不重要。然而,从HTTP的角度来看,这确实很重要。

从HTTP的角度来看,多个URI代表一个唯一的、潜在可缓存的资源。缓存控制标头显然将控制任何缓存。但是,大多数代理不会缓存带有查询字符串的URI,因此带有筛选选项的单个URI通常是不可缓存的。

您还需要考虑不包括查询字符串参数的后果。即。/events会输出什么?如果llama_id参数是必需的,则这一点不明显。

就我个人而言,我倾向于多URI选项

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19671027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档