Ruby on rails Rails:如何保持复杂应用程序的RESTful?

Ruby on rails Rails:如何保持复杂应用程序的RESTful?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我总是尽可能地使我的应用程序保持RESTful,但最近我开始处理一个复杂的项目,该项目需要在我的控制器中使用多个附加方法 我通常通过向路由中添加另一个:集合来实现这一点,但这似乎是一个解决方法,在场景中我有5个 在控制器中是否有处理额外方法的最佳实践?它们通常是更新模型的简单表单。有一种方法,将自定义操作添加到其他RESTful控制器中 编辑:我看到您已经在Railscast中提到了该方法作为一种解决方法。:-)我相信处理它的唯一其他“纯”方法是根据需要添加额外的控制器,以支持所需的操作。有一种

我总是尽可能地使我的应用程序保持RESTful,但最近我开始处理一个复杂的项目,该项目需要在我的控制器中使用多个附加方法


我通常通过向路由中添加另一个:集合来实现这一点,但这似乎是一个解决方法,在场景中我有5个

在控制器中是否有处理额外方法的最佳实践?它们通常是更新模型的简单表单。

有一种方法,将自定义操作添加到其他RESTful控制器中

编辑:我看到您已经在Railscast中提到了该方法作为一种解决方法。:-)我相信处理它的唯一其他“纯”方法是根据需要添加额外的控制器,以支持所需的操作。

有一种方法,将自定义操作添加到其他RESTful控制器

编辑:我看到您已经在Railscast中提到了该方法作为一种解决方法。:-)我相信唯一的其他“纯”处理方法是根据需要添加额外的控制器以支持所需的操作。

“我通常通过向路由添加另一个:集合来实现这一点,但这似乎是一种解决方法,在场景中我有5个。”

我觉得这很好。REST与crud操作无关,您的担忧似乎源于这样一个事实,即您所做的不仅仅是基本的crud操作,但这并没有什么错

“我通常通过在路由中添加另一个:集合来实现这一点,但这似乎是一个解决办法,在场景中我有5个。”


我觉得这很好。REST与crud操作无关,您的担忧似乎源于这样一个事实,即您所做的不仅仅是基本的crud操作,但这并没有什么错

另一个解决方案,也就是我所做的,就是每次你发现自己创建了一个不适合RESTful操作的操作,例如搜索,所以你可能会发现自己在一个文章控制器上做了一个搜索操作,你可以做的不是创建这个操作,而是创建一个搜索控制器,并在其内部使用RESTful操作。没有规则规定您需要使用所有操作,您可能只需要一个或两个,但它可以保持API的RESTful和代码的组织


这不是一个硬性的规则,但当我试图决定把东西放在哪里时,我确实发现它很有用。

另一个解决方案,也就是我所做的,就是每次你发现自己创建了一个不适合RESTful操作的操作,例如搜索,所以你可能会发现自己在一个文章控制器上执行搜索操作,您可以做的不是创建此操作,而是创建一个搜索控制器,并在其中使用RESTful操作。没有规则规定您需要使用所有操作,您可能只需要一个或两个,但它可以保持API的RESTful和代码的组织


这并不是一条硬性规定,但当我试图决定把东西放在哪里时,我确实发现它很有用。

我认为Rails社区对如何以及在哪里使用“RESTful”这个词有点困惑。严格地说,唯一可以使用RESTful的就是您的web API(正如railsninja已经提到的)。符合REST约定的应用程序(具有REST API的应用程序)的代码通常可以组织成一组控制器(与资源匹配)和这些控制器中的方法(与HTTP协议的四个动词匹配),这只是如何保持应用程序干净和有组织的提示

如果我们想讨论RESTful Rails应用程序,我们不能只讨论RESTful控制器——控制器本身并没有RESTful。一个复杂的web应用程序可能只有一个控制器(和无数的方法),它代表许多资源,并且是完全RESTful的


也就是说,在控制器中添加更多方法是很好的。有时,提取一些额外的方法并创建一个全新的控制器是很好的,只要你觉得合适就可以创建一个全新的控制器(经验法则:只要你能够用某种自给自足的资源(即,一种可以单独存在的资源)来识别它,就可以创建一个新的控制器)。但有时,将一些资源提取到另一个控制器是愚蠢的。假设您有一个具有状态属性的资源。将此状态属性本身视为一个资源并对其执行至少一个操作(更新)是有意义的,但将其提取到另一个控制器不会有任何好处。

我认为Rails社区对如何以及在何处使用“RESTful”一词有点困惑。严格地说,唯一可以使用RESTful的就是您的web API(正如railsninja已经提到的)。符合REST约定的应用程序(具有REST API的应用程序)的代码通常可以组织成一组控制器(与资源匹配)和这些控制器中的方法(与HTTP协议的四个动词匹配),这只是如何保持应用程序干净和有组织的提示

如果我们想讨论RESTful Rails应用程序,我们不能只讨论RESTful控制器——控制器本身并没有RESTful。一个复杂的web应用程序可能只有一个控制器(和无数的方法),它代表许多资源,并且是完全RESTful的

也就是说,在控制器中添加更多方法是很好的。有时,提取一些额外的方法并创建一个全新的控制器是很好的,只要你觉得合适就可以创建一个全新的控制器(经验法则:只要你能够用某种自给自足的资源(即,一种可以单独存在的资源)来识别它,就可以创建一个新的控制器)。但有时,将一些资源提取到di是愚蠢的