【问题标题】:NodeJS req.body is always emptyNodeJS req.body 始终为空
【发布时间】:2018-11-26 20:21:55
【问题描述】:

我的 server.js 代码:

const bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(function (req, res, next) {
    res.setHeader('Access-Control-Allow-Origin', 'http://localhost:3000');
    res.setHeader('Access-Control-Allow-Origin', '*');
    next();
});

const AboutController = require('./controllers/AboutController');
app.use('/about', AboutController);

关于Controller.js

router.post('/store', (req, res, next) => {
    // GETTING REQUEST DETAILS AND INITIALIZATION
    let content         = req.body.content;
    let company_name    = req.body.company_name;
    console.log(req.body);
});
module.exports = router;

问题

req.body 总是返回 {} 这是空对象,我不知道为什么!

我尝试过的

我尝试了console.log(req),它返回了对象,但body 对象仍然是空的!

客户端请求

我正在使用 Postman form-data 来模拟客户端请求。

【问题讨论】:

  • 您尚未指定如何执行客户端请求。它是什么,你在 HTML 中使用form?或者你用 Postman 测试它,或者你模拟请求?
  • 显示客户端请求,否则无法判断你做错了什么,你可能没有发送正确的内容类型,检查这个问题:stackoverflow.com/questions/50606001/…
  • 是的,很明显,问题就在那里。您使用的中间件尝试将正文有效负载解析为 JSON,但您可能会意外发送表单数据或多部分。
  • @IsaacCarolWeisberg 你是对的,我会编辑我的问题.. 我正在使用 Postman
  • @MarcosCasagrande 我已经编辑了我的问题,你是对的

标签: node.js express postman body-parser


【解决方案1】:

您的 Postman 请求无效的原因是您没有在应用中的任何位置解析 form-data 类型。唯一用于解析的中间件是 bodyParser.json(),正如它在锡上所说的那样,它解析 JSON。例如,如果你想解析x-www-form-urlencoded,你可以使用bodyParser.urlencoded()

如果您想要当前必须工作的内容,则需要发送 JSON,而不是 form-data

无论如何,form-data 类型通常用于较大的有效负载(例如:文件)

【讨论】:

    【解决方案2】:

    我找到了解决办法..

    我使用的是 Postman,我使用的是 form-data 而不是 rawjson 并且效果很好我不知道为什么还没!

    【讨论】:

    • 它在某个地方被滥用了。
    猜你喜欢
    • 2017-05-12
    • 1970-01-01
    • 2018-04-30
    • 2018-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-31
    相关资源
    最近更新 更多