我有一个只使用默认的rails应用程序,当前捕获所有路径。这适用于常规HTML请求。
match ':controller(/:action(/:id))(.:format)'
我想向移动客户端公开CRUD功能。那么如何扩展我已经拥有的支持restuful请求(JSON)?我应该在默认路由之前将资源路由添加到我的route.rb吗?或者我应该停止使用默认路由以支持资源路由?我想另一种选择可能是使用match明确指定restful路由。然而,这似乎是错误的。
感谢您的任何建议!
答案 0 :(得分:0)
无论你决定做什么,你都应该考虑放弃默认的全能路线。明确说明您的路线会为您提供许多优势,例如named routes用于您的观看,并作为路线中实际发生情况的文档。
现在,从技术上讲,你根本不需要调整引用的路由来处理大多数请求,无论格式如何(只要它不太深/像/ this / route /那样)。资源路线在大多数情况下都很好,并且是一个很好的起点,但我实际上更喜欢明确地陈述所有路线,如你所提到的。它稍微冗长一点,但它确实提供了几个优点。第一个优势是性能。较少的路由意味着更快的路由,并且明确说明您的路由可以突出显示删除未使用路由的机会。该方法的另一个优点是它提供了额外的可配置性。您可能能够将两条REST-ful路由发送到同一个控制器操作,因为重复的逻辑会导致较少的DRY控制器/视图。最后,与删除catch-all路径的方式大致相同,它可以作为路线的实时文档。您再也不需要转到控制台运行rake routes
命令来查看路由的运行情况。我和下一个人一样喜欢rails魔法,但我觉得这是我在rails应用程序中欢迎额外冗长的少数领域之一。