/ / Por que o Sinatra precisa retroceder o corpo da solicitação? - pedido, sinatra

Por que o Sinatra precisa retroceder o corpo da solicitação? - pedido, sinatra

Eu fiz uma solicitação POST para um aplicativo Sinatra. Percebi que os parâmetros chegam no servidor como um StringIO. Pode ser lido usando request.body.read. No entanto, só pode ser lido uma vez. Para lê-lo novamente, preciso executar request.body.rewind (haha, sinatra)

Por que é projetado dessa maneira? Eu posso ver isso sendo útil no streaming de dados, mas existem outras aplicações?

Respostas:

4 para resposta № 1

Os parâmetros estão disponíveis no Sinatra através do hash params. request.body.read e request.body.rewind fazem parte do Rack, eles não são realmenteimplementado no Sinatra. A maneira mais comum como usei isso no passado é quando uso o Sinatra estritamente como uma API da web e como serializar / desserializar minha carga útil.