我有2个RESTful Rails应用程序,我正试图互相交谈.两者都是用Rails 3编写的(目前是beta3).对服务的请求将需要使用api密钥,这只是每个请求都需要的参数.我似乎无法找到有关如何执行此操作的任何信息.
您可以通过site =方法定义资源连接到的URL.应该有一个等效的query_params =方法或类似的方法.
我找到了一篇与此相关的好博客文章,它是从2008年10月开始的,因此对Rails 3来说并不完全有用.
更新:我有一个想法.小型机架中间件或金属是否可以解决这个问题?它可以直接通过请求,将其添加到api_key上.
使用model#prefix_options这是一个散列,用于将params传递给查询字符串(甚至作为Model.prefix部分的子目录,例如"/ myresource /:param /"将替换为prefix_options [:param]的值.在前缀中找不到的哈希键将被添加到查询字符串中,这是我们想要的情况).
class Model < ActiveResource::Base class << self attr_accessor :api_key end def save prefix_options[:api_key] = self.class.api_key super end end Model.site = 'http://yoursite/' Model.api_key = 'xyz123' m = Model.new(:field_1 => 'value 1') # hits http://yoursite:80/models.xml?api_key=xyz123 m.save
我最近遇到了类似的问题,如果你在Rails3上,它支持使用自定义标题,这使得这些情况下的生活更加轻松.
在您提出请求的一边,添加
headers['app_key'] = 'Your_App_Key'
到您从ActiveResource :: Base继承的类
在您是服务器上,对于身份验证,只需将其作为
request.headers['HTTP_APP_KEY']
例如:
class Magic < ActiveResource::Base headers['app_key'] = 'Your_App_Key' end
现在Magic.get,Magic.find,Magic.post都将发送app_key