Node.js 邮递员发送原始JSON帖子的奇怪响应(节点js)

Node.js 邮递员发送原始JSON帖子的奇怪响应(节点js),node.js,json,postman,Node.js,Json,Postman,我正在尝试使用原始json执行POST请求 在“正文”选项卡中,我选择了此正文的“原始”: { "name": "book" } 在节点js端,我正在执行res.send(JSON.stringify(req.body)) 在邮递员的回复中,我收到: {"{\n\"name\": \"book\"\n}":""} 你什么时候想到的 {"name":"book"} 不知道-原因何在?在我看来这不是邮递员的错,但您的NodeJS服务应用了JSON.stringify两次 能否将响应类型从服务器

我正在尝试使用原始json执行POST请求

在“正文”选项卡中,我选择了此正文的“原始”:

{
"name": "book"
}
在节点js端,我正在执行res.send(JSON.stringify(req.body))

在邮递员的回复中,我收到:

{"{\n\"name\": \"book\"\n}":""}
你什么时候想到的

{"name":"book"}

不知道-原因何在?

在我看来这不是邮递员的错,但您的NodeJS服务应用了JSON.stringify两次


能否将响应类型从服务器记录到控制台,以检查其是否已包含json内容?

您需要使用Express json正文解析器,使用

npm install body-parser; 
然后:

完成此操作后,JSON数据将被正确解析,当您将其发送回时,它将正确呈现

还要确保在邮递员请求中将内容类型标题设置为“application/json”(转到“Headers”并添加一个值为“application/json”的新“Content-Type”标题)

下面是一个简单的express应用程序,它将响应任何JSON帖子:

const express = require("express");
const port = 3000;
const app = express();
const bodyParser = require('body-parser')

app.use(bodyParser.json());

app.post('/', (req, res, next) => {
    console.log("Body: ", req.body);
    res.send(JSON.stringify(req.body));
})

app.listen(port);
console.log(`Serving at http://localhost:${port}`);

尝试使用硬编码的json响应,然后使用动态变量

res.json({"name":"book"});

如果您使用的是Express v4.16.0以后的版本,请尝试在
app.listen()
之前添加此行:


这是Express中的内置中间件功能。它使用JSON有效负载解析传入请求,并基于
主体解析器

hmmm,I'v changed res.send(JSON.stringify(req.body));到控制台日志(请求主体);在终端中,我仍然接收到console.log(req.body.name);->未定义以及如何查找响应类型?:)res.type?我说的是废话->@Terry Lennox的方法看起来很有前途。解决方案是在邮递员请求中将内容类型头设置更改为“application/json”!非常感谢。酷,我做过很多次同样的事情。。真让人困惑!
const express = require("express");
const port = 3000;
const app = express();
const bodyParser = require('body-parser')

app.use(bodyParser.json());

app.post('/', (req, res, next) => {
    console.log("Body: ", req.body);
    res.send(JSON.stringify(req.body));
})

app.listen(port);
console.log(`Serving at http://localhost:${port}`);
res.json({"name":"book"});
app.use(express.json());