Search code examples
node.jsexpresspostman

req.body is empty if I pass data to the form-data from postman in express js API


I'm getting the empty req.body if I pass data to form-data in the postman. If I pass data to x-www-form-urlencoded, then I'm getting data in req.body in the expressjs

enter image description here

app.js

const express = require('express');
const path = require('path');
const cookieParser = require('cookie-parser');
const logger = require('morgan');
const dotenv = require('dotenv').config();
const databaseConnection = require('./config/database');

const indexRouter = require('./routes/index.router');
const productRouter = require('./routes/product.router');
const userRouter = require('./routes/user.router');

databaseConnection();
const app = express();

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', indexRouter);
app.use('/api/v1/product', productRouter);
app.use('/api/v1/user', userRouter);
app.all('*', (req, res) => {
    res.status(404).json({
        status: false,
        message: `The requested URL '${req.url}' does not exist`
    });
})
module.exports = app;

Data should come in the req.body if I pass data to form-data fields in the postman.


Solution

  • A third party (e.g. multer) is needed for parsing form data.

    See an example here