I have a client that is sending data chunks to my node.js server.
I want to listen on the "end" event and retrieve the accumulated request body.
Here is my code:
app.post('/users', function(req, res){
req.on('end', function() { // WHY IS THIS NEVER FIRED?
console.log(req.body);
res.send({
"status": "ok"
});
});
});
The problem is that the 'end' event is never fired.
Anyone knows why?
Also, if I do in this way, will the req.body be the accumulated body of all the body chunks?
Basically http POST only fires when you POST to the server. I can't be certain, but I'm assuming you are just attempting to visit server:port/users
in your web browser and fail to get a response. By default the web browser is GET
ing the server. To fix this you have two options.
1. If you change app.post
to app.get
the event will correctly fire when you visit /users
2. Or you can fire the post function using a form. For example the following code will display a form if you visit the page using GET
. When you submit the form it will fire POST
.
var express = require('express'),
app = express.createServer();
app.listen(1337, "127.0.0.1");
app.get('/users',function(req,res){
res.send('<form method="post" action="/users"><input type="submit" value="Submit" /></form>');
})
app.post('/users', function(req, res){
req.on('end', function() {
console.log('success');
res.send('success!!!');
});
});
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