我不確定我真的理解Sinatra是如何工作的。Rails Ajax - > Sinatra - >亞馬遜API並返回
我想從我的Rails應用程序中使用他們的API獲取一些亞馬遜的產品。但是HTTP請求阻止了IO。我得到了一個建議,即創建一個Sinatra應用程序,並向該應用程序發出Ajax請求。
阿賈克斯:(從我的Rails應用程序)
$.ajax({
url: "http://sinatra.mydomain.com",
dataType: "json",
success: function(data) {
console.log(data);
}
});
西納特拉應用:(我也利用西納特拉同步性寶石)
require 'sinatra'
require 'sinatra/synchrony'
require 'erb'
require 'rest-client'
require 'amazon_product'
Sinatra::Synchrony.overload_tcpsocket!
get '/' do
req = AmazonProduct["us"]
req.configure do |c|
c.key = "KEY"
c.secret = "SECRET"
c.tag = "TAG"
end
req << { :operation => 'ItemSearch',
:search_index => "DVD",
:response_group => %w{ItemAttributes Images},
:keywords => "nikita",
:sort => "" }
resp = req.get
@item = resp.find('Item').shuffle.first
erb :layout, :locals => { :amazon_product => @item }
end
Layout.erb :(如果我在瀏覽器中訪問此Url,則呈現良好)
<%= amazon_product %>
問題:
我的Ajax響應是一個200 OK
但空響應。
我無法弄清楚什麼是錯的。請指教。
它是你真正的亞馬遜關鍵?我認爲這是值得隱藏的。 – WarHog
菜鳥的錯誤:D – Frexuz
我猜你的安裝程序會遇到與你的rails應用程序相同的問題。如果您使用的是事件機器相關的gem,其中rest-client根本就不是我所知的,那麼synchrony的同時/偶數io只會起作用。 – phoet