Wie kann ich den JSON-Anforderungskörper in Sinatra nur einmal analysieren und für alle Routen verfügbar machen?

Ich schreibe eine API und sie empfängt eine JSON-Nutzlast als Anforderungshauptteil.

Um es aktuell zu sehen, mache ich so etwas:

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

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

Was ist ein guter Weg, dies wegzuziehen, damit ich es nicht für jede Route tun muss? Einige meiner Routen sind komplizierter als das, und infolgedessen wird der Request.body bei diesem Ansatz mehrmals nachgelesen und neu analysiert, was ich vermeiden möchte.

Gibt es eine Möglichkeit, die request_payload nur magisch für Routen verfügbar zu machen? So was:

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

Antworten auf die Frage(3)

Ihre Antwort auf die Frage