2

分离 REST JSON API 服务器和客户端?

我正在寻找有关如何为我计划制作的应用程序使用我自己的 API(就像 Twitter 那样)的建议。

我想要一个 REST API,然后我可以将其用于 Web 应用程序、Android 应用程序和一些分析/仪表板应用程序。

Rails 有一个 respond_with 选项,我看到一些应用程序有一个 html 和 json 选项,但我认为这是一种不太好的做事方式,json 是数据,html 是用于演示,你没有使用你的 json API 本质上

这似乎很愚蠢,但是如果我想做一个服务器端的 html 解决方案,我将如何使用 Rails 的 REST api?使用 HTTParty 之类的东西似乎需要做很多工作,有没有办法更直接地访问 API(例如,在 ASP MVC 中,您可以实例化一个控制器类,然后调用它的方法。)

4

1 回答 1

5

您可以使用 HTTParty 并通过包含 ActiveModel 模块创建类似于 rails 模型的客户端模型类。

在以前的 Rails 版本中使用了 activeresource gem,但他们弃用了它,转而支持 HTTParty+ActiveModel 之类的解决方案。

更新

我用基本思想制作了这个例子(从记忆中),不是一个完整的实现,但我想你会明白的。

class Post
  # Attributes handling
  include Virtus

  # ActiveModel
  include ActiveModel::Validations
  extend ActiveModel::Naming
  include ActiveModel::Conversion

  # HTTParty
  include HTTParty

  # Virtus attributes
  attribute :id, Integer
  attribute :title, String
  attribute :content, Text # not sure about this one, read virtus doc

  # Validations
  validates :title, presence: true

  def save
    return false unless valid?

    if persisted?
      self.class.put("/posts/#{id}", attributes)
    else
      self.class.post("/posts", attributes)
    end
  end

  # This is needed for form_for
  def persisted?
    # If we have an id we assume this model is saved
    id.present?
  end

  def decorate
    @decorator ||= PostDecorator.decorate(self)
  end
end

所需宝石:

  • 派对
  • activemodel(存在于rails中)
  • 美德
  • 布帘
于 2013-09-22T08:03:05.937 回答