我想在 Express.js 的响应对象中添加一个 body
属性,每次调用 send 方法时都会调用该属性
,
我通过添加以下代码作为中间件来实现,
但出于某种原因,当我调用 res.send
时,这个函数被调用了两次(一次是 body 是对象,第二次是同一个对象,但是是一个字符串)
1.为什么会被调用两次?
2.为什么以及什么时候将其转换为字符串?
applicationsRouter.use(function (req, res, next) {
var send = res.send;
res.send = function (body) {
res.body = body
send.call(this, body);
};
next();
});
最佳答案
你可能正在使用这样的东西:
res.send({ foo : 'bar' });
换句话说,您正在将对象传递给 res.send
。
这将执行以下操作:
- 以对象作为参数调用
res.send
res.send
checks the argument type并看到它是一个对象,它传递给res.json
res.json
将对象转换为 JSON 字符串,并再次调用res.send
,但这次使用 JSON 字符串作为参数
关于node.js - Express.js- 添加响应主体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39611395/