req.body undefined in express.js
By default req.body
is undefined or empty. The express engine does not read the body of the incoming request that is req.body
.
If we want to read the request body and parse it into req.body
, then you need to install the appropriate middleware.
First, it will see what type of request it is and does it have a body (like a POST or a PUT). Second, it will check the incoming content-type
and does it know how to parse that.
If both matches then the middleware parses it and put it into req.body
. If we do not have this type of middleware installed, then req.body
will be undefined or empty.
Express has several built-in middleware for content-types. We can simply use them inside our express app. The following are some middleware for different content types:
express.json(...) for "application/json" express.raw(...) reads the body into a Buffer for you to parse yourself express.text(...) for "text/plain" - reads the body into a string express.urlencoded(...) for "application/x-www-form-urlencoded"
If the incoming request’s content-type
is JSON, we can then use the following code inside the express app.
app.use(express.json());