Express js form data
You should install body-parser
through npm-install
. Now it comes as a separate middleware.
After that add following line in your app.js
var bodyParser = require('body-parser');app.use(bodyParser.json());app.use(bodyParser.urlencoded());// in latest body-parser use like below.app.use(bodyParser.urlencoded({ extended: true }));
It parses the post
request as an object
. You will get your variables in req.body
.
In your post
request handler.
app.post('/post',function(request,response){ console.log(request.body) //you will get your data in this as object.})
Edit 1
The answer above was for the question specifically asked, the OP was looking for the bodyParser
(deprecated) which was not part of express
anymore.
Since the title of the question is very generic and the answer doesn't include all aspects of form-data
, I will put @StLia's answer as an edit.
This does not handle multipart bodies, due to their complex and typically large nature. For multipart bodies, you may be interested in the following modules:
You can make use of express-formidable module to that.install 'express-formidable' by the following command
npm install express-formidable
the simple example is as follows
const express = require('express');const formidable = require('express-formidable'); var app = express(); app.use(formidable()); app.post('/upload', (req, res) => { //req.fields contains non-file fields //req.files contains files res.send(JSON.stringify(req.fields));});
From the README of body-parser:
This does not handle multipart bodies, due to their complex and typically large nature.
The above is going to work with x-www-form-urlencoded
and json
but it will NOT work with any multipart
. form-data
is also multipart
with the header multipart/form-data
.
In case of form-data
, your best solution would be to use express-formidable.