2014-01-08 20 views
0

我想要一条GET路由,它将查询API以收集数据,然后重定向到POST并将该数据保存到数据库。例如:使用来自API的数据在Sinatra中设置发布参数

get '/query/twitter/company/:name' do 
    get_number_of_tweets_for_day(params[:name]) 
end 

POST '/company/tweets/' do 
    company.tweets.create(:date => time_now, :count => num_tweets) 
end 

如何设置由功能的GET路线返回的数据参数,并将其传递给POST路线,所以我可以保存到数据库?

回答

1

您的代码有两个完全独立的端点,这些端点在不同的API请求中调用。你可以把一个POST请求,即:

post '/company/:name/tweets/' do 
    num_tweets = get_number_of_tweets_for_day(params[:name]) 
    company.tweets.create(:date => time_now, :count => num_tweets) 
end 

作为替代方案,持续后续请求之间的数据中,一般会使用会话:

enable :sessions 

get '/query/twitter/company/:name' do 
    session['num_tweets'] = get_number_of_tweets_for_day(params[:name]) 
end 

post '/company/tweets/' do 
    company.tweets.create(:date => time_now, :count => session['num_tweets']) 
end 

一个重定向是不可能从中获取到POST,因为浏览器会在重定向后保持请求方法相同。你将不得不使你的第一条路线也是一个POST。

相关问题