【问题标题】:Ruby - Handle incoming HTTP POST?Ruby - 处理传入的 HTTP POST?
【发布时间】:2016-10-26 14:58:26
【问题描述】:

我似乎缺少一些基本的东西,因为我不知道如何捕获并处理传入的 HTTP Post。我是第一次学习 Ruby 的 C/C++ 开发人员,我一生中从未处理过 Web 的东西。

我正在编写我的第一个 Slack Webhook,Slack 会将类似的数据发送到我的网络服务器:

token=ZLAmT1sKurm2KwvmYDR9hbiV
team_id=T0001
team_domain=example
channel_id=C2147483705
channel_name=test
user_id=U2147483697
user_name=Steve
command=/weather
text=94070
response_url=https://hooks.slack.com/commands/1234/5678

我不知道如何接受这个 POST 请求,并将其发送到我的应用程序进行处理。

我认为它类似于为终端应用程序处理 argvargc,但我在写前几行时遇到了困难。

我一直在寻找解决方案,但似乎我问错了问题。

我目前有一个 Puma/Sinatra 网络服务器在 heroku 上运行,Procfile 包含:

web: bundle exec puma -p $PORT(我也不知道分配给它的端口。)

【问题讨论】:

标签: ruby heroku web-development-server


【解决方案1】:

类似于this answer,Sinatra 提供了一个 DSL 来接受 POST 请求。在块内,数据将在params 哈希中访问。类似的东西

post '/my_endpoint' do
  content_type :json
  @team_id = params[:team_id]
  res = do_stuff_with_channel_id params[:channel_id] # passing the value to a custom method example
  {my_response: res}.to_json #simple example of returning JSON in response 
end

Sinatra Docs on routing

HTH

【讨论】:

    猜你喜欢
    • 2010-12-08
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-18
    • 1970-01-01
    • 2013-12-19
    • 2014-05-05
    相关资源
    最近更新 更多