/ / ¿Por qué Sinatra necesita rebobinar el cuerpo de la solicitud? - solicitud, sinatra

¿Por qué Sinatra necesita rebobinar el cuerpo de solicitud? - solicitud, sinatra

Hice una solicitud POST a una aplicación de Sinatra. Noté que los parámetros llegan al servidor como StringIO. Se puede leer usando request.body.read. Sin embargo, solo se puede leer una vez. Para leerlo de nuevo, necesito correr request.body.rewind (jaja, Sinatra).

¿Por qué está diseñado de esta manera? Puedo ver que esto es útil en la transmisión de datos, pero ¿hay otras aplicaciones?

Respuestas

4 para la respuesta № 1

Los parámetros están disponibles en Sinatra a través del hash params. request.body.read y request.body.rewind son parte de Rack, en realidad no sonimplementado dentro de sinatra. La forma más común en que he usado esto en el pasado es cuando estoy usando Sinatra estrictamente como API web y serializando / des-serializando mi carga útil.