如何使用nodejs从http请求中访问post对象
如何使用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
如何使用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
无法解析对象。因此,我认为我需要先去掉括号,但我不确定如何操作。
检查更新部分。
当然,这很有道理,谢谢!