【问题标题】:nodejs express 4.0 post json objectnodejs express 4.0 post json 对象
【发布时间】:2014-10-05 23:27:43
【问题描述】:

我正在尝试解析请求中发送的 json 对象并回显正在发送的数据 这是我的发帖请求

    $.ajax({
        url: url,
        type: 'POST',
        contentType: 'application/json',
        data: JSON.stringify({
            name:"Bob"
        }),
        // processData: false, // this is optional
        dataType: 'json'
    });

这是我尝试访问对象参数的方式

    var express = require('express');
    var app = express();
    var bodyParser = require('body-parser');
    var router = express.Router();
    app.use(bodyParser.urlencoded({ extended: true }));
    app.use(bodyParser.json());
    app.use('/api', router);
    app.listen(8010);
    router.post('/addUser', function(req, res){
         console.log(req.body);

    }); 

【问题讨论】:

  • 不应该是name:"Bob""name":"Bob"

标签: javascript node.js api express


【解决方案1】:

我认为你需要:

router.post('/addUser', function(req, res){
   console.log(req.body.name);  
});

编辑

经过测试,你也漏掉了这两行(或者你没有故意包含它们):

app.use(router); //You need to register your rooter as a middleware
app.listen(1234); //Your port of choice

【讨论】:

  • 我尝试使用 req.body.name。我正在使用 Postman 测试客户端,但是我的 req.body 始终为空
  • 想通了。问题出在我用于测试的 Postman 客户端上。它不会正确发送请求。切换到其他客户端
【解决方案2】:

这里的关键是您使用了中间件“body-parser”。

它的作用很简单,它解析数据并创建一个主体对象作为您请求的参数。

因此,您要查找的 name 参数将在:req.body.name 中找到,而不是在 param 中

引用自 github 页面:

req.body

在中间件之后的请求对象上填充一个包含解析数据的新主体对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-13
    • 1970-01-01
    • 2016-02-25
    • 2016-07-09
    • 1970-01-01
    • 2018-07-02
    • 2019-05-15
    • 2014-04-01
    相关资源
    最近更新 更多