/ / Pourquoi Sinatra doit-il rembobiner le corps de la demande? - demande, sinatra

Pourquoi Sinatra doit-il rembobiner le corps de la demande? - demande, sinatra

J'ai fait une demande POST à ​​une application Sinatra. J'ai remarqué que les paramètres arrivent sur le serveur en tant que StringIO. Il peut être lu en utilisant request.body.read. Cependant, il ne peut être lu qu'une seule fois. Pour le relire, je dois courir request.body.rewind (haha, Sinatra).

Pourquoi est-il conçu de cette façon? Je peux voir que cela est utile pour la transmission en continu de données, mais existe-t-il d'autres applications?

Réponses:

4 pour la réponse № 1

Les paramètres sont disponibles dans Sinatra via le hachage params. request.body.read et request.body.rewind font partie de Rack, ils ne sont pas réellementmis en œuvre au sein de Sinatra. La manière la plus courante que j’ai utilisée dans le passé est lorsque j’utilise Sinatra uniquement comme API Web et que je sérialise / désérialise mes données utiles.