我希望有一个GET路由,它将查询API以收集数据,然后重定向到具有该数据的POST以保存到数据库。例如:
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路由,以便保存到数据库?
答案 0 :(得分: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
从GET到POST无法进行重定向,因为浏览器会在重定向后保持请求方法相同。您也必须将第一条路线设为POST。