Jar*_*red 20 ruby ruby-on-rails activeresource ruby-on-rails-3
我有2个RESTful Rails应用程序,我正试图互相交谈.两者都是用Rails 3编写的(目前是beta3).对服务的请求将需要使用api密钥,这只是每个请求都需要的参数.我似乎无法找到有关如何执行此操作的任何信息.
您可以通过site =方法定义资源连接到的URL.应该有一个等效的query_params =方法或类似的方法.
我找到了一篇与此相关的好博客文章,它是从2008年10月开始的,因此对Rails 3来说并不完全有用.
更新:我有一个想法.小型机架中间件或金属是否可以解决这个问题?它可以直接通过请求,将其添加到api_key上.
Kel*_*vin 21
使用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
Run Code Online (Sandbox Code Playgroud)
sub*_*iet 10
我最近遇到了类似的问题,如果你在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
Run Code Online (Sandbox Code Playgroud)
现在Magic.get,Magic.find,Magic.post都将发送app_key
| 归档时间: |
|
| 查看次数: |
9713 次 |
| 最近记录: |