如何使用nodejs从http请求访问post对象

How to access post object from http request using nodejs

我的问题的简单版本是:如何访问此对象的 hello world 部分: { '{"msg":"Hello World!"}': '' }

较长的介绍性版本是;我一直在尝试发送和接收 postBody 对象,但我似乎无法访问我发送的请求中的数据。

我想我遗漏了一些简单的东西,我从 重新创建了一个请求,但我似乎无法访问正文的“hello world”部分。

关于如何访问内部对象的答案和可选提示 and/or 指针将不胜感激。

Post 请求:

var postData = JSON.stringify({ msg: "Hello World!" });
  var options = {
    hostname: "localhost",
    port: 5000,
    path: "/tester",
    method: "GET",
    headers: {
     "Content-Type": "application/x-www-form-urlencoded",
     "Content-Length": postData.length,
    },
  };
  var req = http.request(options, (res) => {
    console.log("statusCode:", res.statusCode);
    console.log("headers:", res.headers);
    res.on("data", (d) => {
      // console.log("d", d)
      process.stdout.write(d);
    });
  });
  req.on("error", (e) => {
    console.error(e);
  });
  req.write(postData);
  req.end();

接收请求:

app.get("/tester", (req, res) => {
  console.log("request fired");
  console.log("body:", req.body);
  let x = req.body
  console.log(typeof x);
  res.end();
});

日志:

request fired
body: { '{"msg":"Hello World!"}': '' }
object

您在发送数据时正在做 JSON.stringify。所以当你收到它时,只需使用 JSON.parse 解析它。像这样

let data = JSON.parse(req.body);

现在您可以像这样从您的 body 访问 msg

console.log(data.msg);

这将 return Hello World!

由于某种原因,您的情况似乎很奇怪,您的数据在 object 的密钥中 您可以像这样访问数据

let data = {'{"msg":"Hello World!"}': ''}

console.log(JSON.parse(Object.keys(data)[0]).msg)

let stringifiedData = JSON.stringify({
  msg: "Hello World!"
});

console.log(stringifiedData);

let parsedData = JSON.parse(stringifiedData);

console.log(parsedData.msg);

/* UPDATE */

let data = {
  '{"msg":"Hello World!"}': ''
}

console.log(JSON.parse(Object.keys(data)[0]).msg)