我们可以将Rails默认控制器用于移动API请求吗?

时间:2015-06-16 12:40:09

标签: ruby-on-rails api

我有Rails应用程序,我想在我的Android手机中使用CRUD功能。

Rails在所有控制器中提供默认的respond_to动作(html,json,xml..etc)。我一直在为Android开发移动应用程序。我想在我的移动Rails应用程序中进行CRUD操作。 我们可以使用此默认的respond_to进行API调用吗?

如果我们为API执行单独的命名空间,默认情况下所有控制器都编写相同的方法/代码,也必须再次为API所有控制器写入。

我无法在此处应用RAILS DRY 概念!

在不重复控制器代码或模型代码的情况下,在Rails中执行API功能的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

可以如上所述完成。但我不认为它似乎是consensus。我会去创建一个单独的基本控制器,您可以执行诸如禁用禁用csrf检查之类的操作。此外,您可能会在浏览器客户端中使用大量令牌代码,您只需要在api调用中使用它。为此目的,Grape是一个很棒的宝石。

答案 1 :(得分:0)

是的,您可以使用默认的respond_to方法进行api调用。

respond_to do |format|

  format.html # show.html.erb
  format.json { render json: @user }

end

另一种方法是在routes.rb

中指定默认格式
resources :clients, defaults: {format: :json}

这些是制作API的干难方法。要正确序列化json,您可以使用ActiveModel::SerializerjBuilder Gem

Rails有一个专门用于创建apis的gem rails-api。考虑使用它而不是rails