Rack 3 made it possible for the request body to not be rewindable, meaning it can only be read once
We rely on reading the request body for two pieces of metadata, request.params (if it's a form request) and request.body. These won't be set if the body has already been read, which is quite likely
With request.params we will only read the query string if the request cannot be rewound
With request.body we will not read it at all if the request cannot be rewound
Goal
Rack 3 made it possible for the request body to not be rewindable, meaning it can only be read once
We rely on reading the request body for two pieces of metadata,
request.params
(if it's a form request) andrequest.body
. These won't be set if the body has already been read, which is quite likelyWith
request.params
we will only read the query string if the request cannot be rewoundWith
request.body
we will not read it at all if the request cannot be rewound