Как разобрать тело запроса 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

Ответы на вопрос(3)

Ваш ответ на вопрос