尝试实现API调用。控制器里面有什么?我想我应该创建一个API API视图。我应该使用其中一个API宝石吗?
我正在尝试使用我的第一个应用程序写入数据库。我的第二个应用程序将使用Web API从第一个应用程序的uri获取GET / POST,以获取可共享相同数据的字段。
答案 0 :(得分:2)
看看rabl gem它将帮助您使用当前控制器生成JSON视图。通过此,您可以了解JSON API的工作方式,并继续命名控制API的控制器和路由。对于两个应用之间的http请求,您可以使用httparty或typhoeus gems
答案 1 :(得分:1)
我在RoR中完成了几个Api,这些是我通常采取的步骤:
我通常为api创建一个控制器,让我们称之为ApiController,我在我的应用程序上执行的所有请求都通过该控制器
为简单起见,这是一种验证使用api的用户的非安全方式:
class ApiController < ApplicationController
before_filter :apiauth
private
def apiauth
if request.headers["ApiAuth"]!='IguD7ITC203'
raise "error"
end
end
end
这是一个可以在控制器上实现的简单方法:
def successOrder
@order=Order.find_by_id(params['id'])
if @order
@order.status=params['status']
if @order.save
render :json => {:status => "true", :order => {:id => @order.id, :status => @order.status}}
else
render :json => {:status =>"false", :errors => @order.errors.full_messages }
end
else
render :json => {:status => "false", :errors => ["Invalid Order Id"]}
end
end
有时我喜欢为我的api通配我的路线,如下:
match '/:action', :to => 'api#%{action}', :constraints => lambda {|r| r.subdomain.present? && r.subdomain == 'api'} , :via => [:post]
Finnaly看看像Jbuilder这样的宝石,可以为你的jsons建立你很棒的回应。希望它有所帮助
答案 2 :(得分:0)
我最近创建了一个为移动和Web应用程序提供服务的API。我使用了RABL gem模板系统,我可以根据需要自定义我的API视图。您可以使用RABL从任何ruby对象生成基于JSON和XML的API。