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