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
宝石需要: