【问题标题】:Node.js server: get body from POST requestNode.js 服务器:从 POST 请求中获取正文
【发布时间】:2016-10-28 14:02:42
【问题描述】:

我已经使用 node.js 和 express.js 创建了一个服务器,但是如果我发送一个 POST 请求并尝试检查正文,它总是说正文是空的。这是我的代码:

app.js:

var express = require('express');

var app = express();

app.set('port', process.env.PORT || 61000);

require('./routes/routes.js')(app);

var server = app.listen(app.get('port'), function () {

    var port = server.address().port;

    console.log('Server runs on port %s', port);

});

路线/路线.js:

module.exports = function(app) {        

     app.get('/', function(req, res) { 
          res.status(200).json({"response": "Hello!"});    
     });     

     app.post('/', function (req, res) {

         if (req.body != null) {
             res.status(200).json("Success");
         }

         res.status(200).json("Error");
     });
};

如果我现在在 www.hurl.it 上发出 POST 请求并添加一个带有“Test”之类的文本的正文,它会给我响应“Error”,但它应该给我响应“Success”,因为body 不为空。

如果我像这样将“body-parser”模块添加到我的应用程序中:

var bodyParser = require('body-parser');
...
app.use(bodyParser.json());

即使我让身体空虚,它也会给我“成功”。如果我返回 req.body,则响应为:{},如果我添加正文,它也是 {}

有人知道怎么回事吗?

【问题讨论】:

    标签: javascript node.js express post server


    【解决方案1】:

    我认为它总是遇到错误情况。 试试这个:

    if (req.body != null) {
      res.status(200).json("Success");
    } else {
      res.status(200).json("Error");
    }
    

    【讨论】:

    • 添加到这个和空哈希 {} 是一个有效的正文。因此,您可能想要检查哈希是否为空。 stackoverflow.com/questions/679915/…
    • 还是不行。如果我在正文中添加了一些内容,为什么它会给我一个空哈希 {}?
    • 我正在使用 www.hurl.it/ 发送请求,这是来自我的节点服务器的位置:http://eis1617.lupus.uberspace.de/nodejs/
    • 确保以正确的顺序添加它们。 AKA 正文解析器必须是添加到应用程序中的第一件事:
    • var app = express(); var bodyParser = require('body-parser'); app.use(bodyParser.json()); var router = express.Router();
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    • 2019-11-26
    • 2012-04-03
    • 1970-01-01
    相关资源
    最近更新 更多