Node.js如何从请求中读取json数据?

时间:2016-12-18 18:11:45

标签: json node.js express

我有一台服务器如下:

app.post('/', function(req, res, next) {
   console.log(req);
   res.json({ message: 'pppppppppppppssssssssssssss ' });   
});

请求从客户端发送:

$.ajax({
    type: "POST",
    url: self.serverURI,
    data: JSON.stringify({ "a": "128", "b": "7" }),
    dataType: 'json',
    success: function (result) {
        console.log(result);
    },
    error: function (xhr, ajaxOptions, thrownError) {
        console.log(xhr);
    }
});
到目前为止连接正常。

我的问题出在服务器上:

console.log(req);

我想要读取我发送的数据。如何阅读{ "a": "128", "b": "7" }中的req

2 个答案:

答案 0 :(得分:6)

虽然您没有提及它,但您的代码看起来像是为Express环境编写的。我的答案是针对这个。

确保对Express使用body-parser。如果您的项目依赖于某些生成的样板代码,它很可能已经包含在您的主服务器脚本中。如果不是:

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

使用npm进行安装:npm install body-parser --save

然后可以通过req.body

访问已解析的JSON
app.post('/', function(req, res, next) {
    console.log(req.body); // not a string, but your parsed JSON data
    console.log(req.body.a); // etc.
    // ...
});

答案 1 :(得分:2)

对于Express 4 +,

const express = require("express");
const app = express();

app.use(express.json());

然后,您可以按预期使用req.body

app.post("/api", (req, res) => {
  /*
    If the post request included { data: "foo" },
    then you would access `data` like so:
  */
  req.body.data
  ...
});