Ruby - обрабатывать входящий HTTP POST?

Кажется, мне не хватает чего-то простого, так как я не знаю, как перехватить и обработать входящий HTTP-пост. Я разработчик C/C++, изучаю Ruby впервые, и я никогда не сталкивался с веб-материалами в своей жизни.

Я пишу свой первый 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 и отправить его в мое приложение для обработки.

Я предполагаю, что это похоже на обработку argv а также argc для терминального приложения, но я застрял писать первые несколько строк.

Я искал решение, но, похоже, я задаю неправильные вопросы.

В настоящее время у меня есть сервер Puma/Sinatra, работающий на heroku, с Procfile, содержащим:

web: bundle exec puma -p $PORT (Я также понятия не имею, какой порт ему назначен.)

1 ответ

Решение

Подобно этому ответу, 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

Синатра Документы по маршрутизации

НТН

Другие вопросы по тегам