[英]Resource mapping in a Ruby on Rails URL (RESTful API)
我有点困难想出正确的答案,所以我会在这里征求我的问题。 我正在研究RESTFul API。 当然,我有多个资源,其中一些资源包括父母与子女之间的关系,其中一些资源是独立的资源。 我遇到一些困难的地方在于弄清楚如何让那些将根据我的API构建客户的人们更容易。
情况就是这样。 假设我有'街头'资源。 每条街都有多个房屋。 So Street:has_many to Homes and Homes:belongs_to Street。 如果用户想要在特定的主资源上请求HTTP GET,则以下内容应该有效:
http://mymap/streets/5/homes/10
这允许用户获得id为10的家的信息。直接前进。 我的问题是,我是否通过授予用户访问权限来违反本书的规则:
http://mymap/homes/10
从技术上讲,家庭资源本身就没有街道。 有意义的是,它存在于没有封装街道的自己的实体中,即使业务逻辑另有说法。
处理这个问题的最佳方法是什么?
编辑! 为了成为一名优秀的StackOverflow公民,我回过头来看一下如何在上面实现它们的支持代码块。
map.resources :streets,
:has_many => :homes
:shallow => true
这将创建我正在寻找的两种类型的路线。
如果您的家庭记录只能属于一个街道,那么当您单独检查一个家庭时,这种关系不会混淆。 无论出于何种原因,您仍然可以回溯到相关的街道记录。
在您拥有多对多关系的情况下,对REST结构进行解嵌可能会让您遇到麻烦。 如果特定记录仅在特定上下文中有意义,并且您删除了该上下文,则显然存在混淆。
我认为在您的特定情况下,您可能不需要实现这两种方法,而是采用“更平坦”的方法来降低URL的复杂性。
不,这是浅薄的路线工作和使用很多。
我真的很喜欢这种方法。 我建议你阅读它。 简而言之,本文说您不应该将资源嵌套到1级以上。 如果嵌套资源有可能被浅化,那就去做吧。
在我的一个应用程序中,我真的用嵌套资源搞砸了。 我甚至走到3或4深,这成了一场噩梦......
如果让事情变得简单,嵌套真的很棒。 如果没有,请放弃!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.