How to access the request body when POSTing using Node.js and Express?
Express 4.0 and above:
$ npm install --save body-parser
And then in your node app:
const bodyParser = require('body-parser');
app.use(bodyParser);
Express 3.0 and below:
Try passing this in your cURL call:
--header "Content-Type: application/json"
and making sure your data is in JSON format:
{"user":"someone"}
Also, you can use console.dir in your node.js code to see the data inside the object as in the following example:
var express = require('express');
var app = express.createServer();
app.use(express.bodyParser());
app.post('/', function(req, res){
console.dir(req.body);
res.send("test");
});
app.listen(3000);
This other question might also help: How to receive JSON in express node.js POST request?
If you don't want to use the bodyParser check out this other question: https://stackoverflow.com/a/9920700/446681
Get POST request body with express and fetch
Try setting up express.json()
inside the app:
const express = require('express');
const app = express();
app.use(express.json())
app.post('/clicked', (req, res) => {
console.log(req.a);
console.log(req.b);
console.log(req.body);
res.sendStatus(201);
});
Express is not reading the request body
If the content-type
for your POST is JSON, then you need this:
app.use(express.json())
as middleware before your POST request handler. That will read the JSON body of the request, parse it and put it in req.body
.
node.js, express, how to get data from body form-data in post request
after hours, i found it.
body-parser its not required because in newest express is included.
i have found how to get form-data, it require multer(for parsing multipart/form data) middleware. i have found it in here.
first install multer
npm install multer --save
import multer in your app. for example in my code
var express = require('express');
var app = express();
var multer = require('multer');
var upload = multer();
// for parsing application/json
app.use(express.json());
// for parsing application/x-www-form-urlencoded
app.use(express.urlencoded({ extended: true }));
// for parsing multipart/form-data
app.use(upload.array());
app.use(express.static('public'));
app.post('/api/user', function (req, res) {
console.log(req.body);
console.log(req.body.username);
});
module.exports = app;
so, it can receive form-data, raw, or x-www-form-urlencoded.
How to access POST form fields in Express
Things have changed once again starting Express 4.16.0, you can now use express.json()
and express.urlencoded()
just like in Express 3.0.
This was different starting Express 4.0 to 4.15:
$ npm install --save body-parser
and then:
var bodyParser = require('body-parser')
app.use( bodyParser.json() ); // to support JSON-encoded bodies
app.use(bodyParser.urlencoded({ // to support URL-encoded bodies
extended: true
}));
The rest is like in Express 3.0:
Firstly you need to add some middleware to parse the post data of the body.
Add one or both of the following lines of code:
app.use(express.json()); // to support JSON-encoded bodies
app.use(express.urlencoded()); // to support URL-encoded bodies
Then, in your handler, use the req.body
object:
// assuming POST: name=foo&color=red <-- URL encoding
//
// or POST: {"name":"foo","color":"red"} <-- JSON encoding
app.post('/test-page', function(req, res) {
var name = req.body.name,
color = req.body.color;
// ...
});
Note that the use of express.bodyParser()
is not recommended.
app.use(express.bodyParser());
...is equivalent to:
app.use(express.json());
app.use(express.urlencoded());
app.use(express.multipart());
Security concerns exist with express.multipart()
, and so it is better to explicitly add support for the specific encoding type(s) you require. If you do need multipart encoding (to support uploading files for example) then you should read this.
Related Topics
Animated Gif Only Loops Once in Chrome and Firefox
Jquery - How to Disable the Entire Page
Getcomputedstyle (Or) $.Css(Map) <-- to Get Every Style Declaration
Jquery Jump or Scroll to Certain Position, Div or Target on the Page from Button Onclick
How to Get a Number Value from an Input Field
How to Change the Background Image of Div Using JavaScript
JavaScript Detect Click Event Outside of Div
JavaScript Error Null Is Not an Object
Mui Createtheme Is Not Properly Passing Theme to Mui Components
How to Optimize Website for Touch Devices
How to Do Page Numbering in Header/Footer HTMLs with Wkhtmltopdf
Jquery Parallax Scrolling Effect - Multi Directional
Ios8 Safari After a Pushstate the :Nth-Child() Selectors Not Works
How to Refer to a Variable Using a String Containing Its Name
JavaScript Incapable of Getting Element's Max-Height via Element.Style.Maxheight
How to Destructure All Properties into the Current Scope/Closure in Es2015