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

28 浏览
0 Comments

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

我问题的简单版本是:我如何访问该对象的“Hello World”部分:\n{ \'{\"msg\":\"Hello World!\"}\': \'\' }\n更详细的版本是:我一直在尝试发送和接收postBody对象,但似乎无法从我发送的请求中访问数据。\n我觉得我可能漏掉了一些简单的东西,我从这里重新创建了一个请求,但似乎无法访问正文的“Hello World”部分。\n如何访问内部对象的答案,以及可选的提示和/或指导将不胜感激。\n发送请求:\n

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();

\n接收请求:\n

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

\n日志:\n

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

0
0 Comments

如何使用Node.js从HTTP请求中访问POST对象

在发送数据时,您使用了JSON.stringify。所以在接收到数据后,只需使用JSON.parse进行解析。像这样:

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

现在,您可以像这样从请求体中访问msg

console.log(data.msg);

这将返回Hello World!

您的情况似乎有些奇怪,由于某种原因,您的数据位于对象的键中,您可以像这样访问数据:

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);
/* 更新 */
let data = {
  '{"msg":"Hello World!"}': ''
}
console.log(JSON.parse(Object.keys(data)[0]).msg)

我尝试了这个方法,但是出现了错误:"SyntaxError: Unexpected token o in JSON at position 1",经过一些研究发现,JSON.parse无法解析对象。因此,我认为我需要先去掉括号,但我不确定如何操作。

检查更新部分。

当然,这很有道理,谢谢!

0