这是我第一次尝试编写Rails应用程序来使用外部Web服务。
我已经做了一些基本的实验,通过ActiveResource从另一个rails应用程序检索一些记录,效果很好,但在这个例子中,我试图访问第三方Web服务,这需要非常具体的身份验证才能做任何事情。
有问题的服务是由DNSMadeEasy提供的REST API,其文档位于http://www.dnsmadeeasy.com/services/rest-api/
根据文档的身份验证要求如下:
所以我想出了如何获取日期并计算哈希值:
request_date = Time.now.httpdate hmac = OpenSSL :: HMAC.hexdigest('sha1',secret_key,request_date)
所以我的问题有三个部分:
首先,当我向Web服务发送请求时,如何在HTTP标头中插入此信息?
其次,我如何将所有这些放在我的ActiveResource类继承的超类中,以便我不必在Domain和ResourceRecord的类中担心它?
第三,是否有最佳实践在您的应用中存储API和密钥,即应该使用初始化程序,还是最好使用环境变量?
非常感谢此类工作流程的任何提示和技巧。
由于
答案 0 :(得分:3)
1 - 您可以通过设置名为@headers的实例变量来设置标题,如下所示:
class Base < ActiveResource::Base
@headers = { ‘key’ => ‘value’ }
end
2 - 使您所有的资源继承自您刚刚创建的Base,而不是继承自ActiveResource :: Base。
3 - 我通常将这些密钥放在环境文件中,或者我使用此gem SettingsLogic