How do I consume the JSON POST data in an Express application
I think you're conflating the use of the response
object with that of the request
.
The response
object is for sending the HTTP response back to the calling client, whereas you are wanting to access the body of the request
. See this answer which provides some guidance.
If you are using valid JSON and are POSTing it with Content-Type: application/json
, then you can use the bodyParser
middleware to parse the request body and place the result in request.body
of your route.
For earlier versions of Express (< 4)
var express = require('express') , app = express.createServer();app.use(express.bodyParser());app.post('/', function(request, response){ console.log(request.body); // your JSON response.send(request.body); // echo the result back});app.listen(3000);
Test along the lines of:
$ curl -d '{"MyKey":"My Value"}' -H "Content-Type: application/json" http://127.0.0.1:3000/{"MyKey":"My Value"}
Updated for Express 4+
Body parser was split out into it's own npm package after v4, requires a separate install npm install body-parser
var express = require('express') , bodyParser = require('body-parser');var app = express();app.use(bodyParser.json());app.post('/', function(request, response){ console.log(request.body); // your JSON response.send(request.body); // echo the result back});app.listen(3000);
Update for Express 4.16+
Starting with release 4.16.0, a new express.json()
middleware is available.
var express = require('express');var app = express();app.use(express.json());app.post('/', function(request, response){ console.log(request.body); // your JSON response.send(request.body); // echo the result back});app.listen(3000);
For Express v4+
install body-parser from the npm.
$ npm install body-parser
https://www.npmjs.org/package/body-parser#installation
var express = require('express')var bodyParser = require('body-parser')var app = express()// parse application/jsonapp.use(bodyParser.json())app.use(function (req, res, next) { console.log(req.body) // populated! next()})