2010-05-25 126 views
1

我已经组合了一个RoR应用程序,现在想发布一个RESTful Web服务来与我的应用程序进行交互。使用Ruby on Rails设计Web服务 - 映射ActiveRecord模型

我不确定要去哪里,我不想简单地公开我的ActiveRecord模型,因为每个模型上都有一些不需要或不应该通过这样的API公开的数据。我也不想创建一个SOAP解决方案。

我的应用程序是使用Rails 2.3.5构建的,我希望在其发布后不久就可以迁移到Rails 3.0。

我基本上在寻找一种方法将我的ActiveRecord模型映射到可通过Web服务公开的“模型”。 ActiveResource是否正确使用?那么ActionWebService呢?

回答

3

您可以通过控制器(或控制器)来实现。您的RESTful控制器操作可以为传入的Web服务请求定义API,并且您可以在响应中呈现XML或JSON,而不是呈现HTML视图。

我确定有更复杂的方法来做到这一点,但这是简单的方法。

+0

不是你也可以重写模型中的#as_json来决定你将暴露什么值,并且变换你想要应用的值。有关使用#as_json和#to_json的详细信息,请参阅http://stackoverflow.com/questions/2572284/override-to-json-in-rails-2-3-5/2574900#2574900。 – 2010-05-25 04:52:45

+0

重写每个模型上的to_json和to_xml方法是否被认为是“更好的”?我认为我正在努力实现的目标是长期可以维持的,而不会让我的模型蒙上阴影。 – 2010-05-25 10:56:56