Rails使用内部REST API

单独的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中,您可以实例化控制器类,然后调用其方法)。


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

在之前的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

宝石需要:

  • httparty
  • activemodel(存在于rails中)
  • VIRTUS
  • 德雷珀
  • 链接地址: http://www.djcxy.com/p/45637.html

    上一篇: Rails consuming internal REST API

    下一篇: Testing PHP response in Ajax