I am using nodejs + Express (v3) like this:
app.use(express.bodyParser()); app.route('/some/route', function(req, res) { var text = req.body; // I expect text to be a string but it is a JSON });
I checked the request headers and the content-type is missing. Even if "Content-Type" is "text/plain" it is parsing as a JSON it seems. Is there anyway to tell the middleware to always parse the body as a plain text string instead of json? Earlier versions of req
used to have req.rawBody
that would get around this issue but now it does not anymore. What is the easiest way to force parse body as plain text/string in Express?
String text = "plain text request body"; RequestBody body = RequestBody. create(MediaType. parse("text/plain"), text); Call<ResponseBody> call = service. getStringRequestBody(body); Response<ResponseBody> response = call.
node. js - Non-deprecated alternative to body-parser in Express.
Express doesn't automatically parse the HTTP request body for you, but it does have an officially supported middleware package for parsing HTTP request bodies. As of v4. 16.0, Express comes with a built-in JSON request body parsing middleware that's good enough for most JavaScript apps.
No need to install body-parser with express , but you have to use it if you will receive post request.
In express 4.x you can use the text parser from bodyParser https://www.npmjs.org/package/body-parser
just add in app.js
app.use(bodyParser.text());
Also in the desired route
router.all('/',function(req,res){ console.log(req.body); })
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With