Como analisar o corpo da solicitação JSON no Sinatra apenas uma vez e expô-lo a todas as rotas?

Estou escrevendo uma API e ela recebe uma carga útil JSON como o corpo da solicitação.

Para chegar a isso atualmente, estou fazendo algo assim:

post '/doSomething' do
    request.body.rewind
    request_payload = JSON.parse request.body.read

    #do something with request_payload
    body request_payload['someKey']
end

O que é uma boa maneira de abstrair isso para que eu não precise fazer isso em cada rota? Algumas de minhas rotas são mais complicadas do que isso e, como resultado, o corpo do pedido seria relido e reparado várias vezes por rota com essa abordagem, que eu gostaria de evitar.

Existe alguma maneira de tornar o request_payload magicamente disponível para rotas? Como isso:

post '/doSomething' do
    #do something with request_payload, it's already parsed and available
    body request_payload['someKey']
end

questionAnswers(3)

yourAnswerToTheQuestion