Как разобрать тело запроса JSON в Синатре только один раз и открыть его для всех маршрутов?
Я пишу API, и он получает полезную нагрузку JSON в качестве тела запроса.
Чтобы добиться этого в настоящее время, я делаю что-то вроде этого:
post '/doSomething' do
request.body.rewind
request_payload = JSON.parse request.body.read
#do something with request_payload
body request_payload['someKey']
end
Какие'это хороший способ абстрагироваться, чтобы я нене нужно делать это для каждого маршрута? Некоторые из моих маршрутов являются более сложными, чем этот, и в результате этого request.body будет перечитывать и повторно обрабатывать несколько раз для маршрута с этим подходом, которого я хочу избежать.
Есть ли способ сделать request_payload просто волшебно доступным для маршрутов? Как это:
post '/doSomething' do
#do something with request_payload, it's already parsed and available
body request_payload['someKey']
end