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
Синатра Документы по маршрутизации
НТН