我想要一个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 路由以便保存到数据库?
您的代码有两个完全独立的终结点,它们在单独的 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。