Я не уверен, что действительно понимаю, как работает Синатра.
Я бы хотел получить некоторые продукты от Amazon, используя их API, в моем приложении Rails. Но HTTP-запросы блокируют IO. Я получил совет создать приложение Sinatra и вместо этого сделать Ajax-запрос.
Ajax : (из моего приложения Rails)
$.ajax({
url: "http://sinatra.mydomain.com",
dataType: "json",
success: function(data) {
console.log(data);
}
});
Приложение Sinatra : (Я также использую камень Синатра-синхрония)
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
, но с пустым ответом.
Я не могу понять, что не так. Пожалуйста, сообщите.