首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用API中的数据在Sinatra中设置post参数

使用API中的数据在Sinatra中设置post参数
EN

Stack Overflow用户
提问于 2014-01-09 00:19:45
回答 1查看 620关注 0票数 0

我希望有一个GET路由,它将查询API来收集数据,然后重定向到包含该数据的POST以保存到DB中。例如:

代码语言:javascript
运行
复制
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路由,以便可以保存到DB?

EN

回答 1

Stack Overflow用户

发布于 2014-01-09 00:49:24

您的代码有两个完全独立的端点,它们在单独的API请求中被调用。您可以将其设置为一个POST请求,即:

代码语言:javascript
运行
复制
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

作为替代方案,为了在后续请求之间持久化数据,您通常会使用会话:

代码语言:javascript
运行
复制
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的重定向是不可能的,因为浏览器在重定向后将保持请求方法不变。你也必须把你的第一条路由写成帖子。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21001026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档