Wednesday 10 April 2019

How to process POST data in Node.js?



How do you extract form data (form[method="post"]) and file uploads sent from the HTTP POST method in Node.js?



I've read the documentation, googled and found nothing.




function (request, response) {
//request.post????
}


Is there a library or a hack?


Answer



If you use Express (high-performance, high-class web development for Node.js), you can do this:




HTML:










API client:




fetch('/', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
user: {
name: "John",
email: "john@example.com"

}
})
});


Node.js: (since Express v4.16.0)



// Parse URL-encoded bodies (as sent by HTML forms)
app.use(express.urlencoded());


// Parse JSON bodies (as sent by API clients)
app.use(express.json());

// Access the parse results as request.body
app.post('/', function(request, response){
console.log(request.body.user.name);
console.log(request.body.user.email);
});



Node.js: (for Express <4.16.0)



const bodyParser = require("body-parser");

/** bodyParser.urlencoded(options)
* Parses the text as URL encoded data (which is how browsers tend to send form data from regular forms set to POST)
* and exposes the resulting object (containing the keys and values) on req.body
*/
app.use(bodyParser.urlencoded({
extended: true

}));

/**bodyParser.json(options)
* Parses the text as JSON and exposes the resulting object on req.body.
*/
app.use(bodyParser.json());

app.post("/", function (req, res) {
console.log(req.body.user.name)
});


No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...