NodeJS express. js-添加响应正文

jutyujz0  于 2022-12-03  发布在  Node.js
关注(0)|答案(2)|浏览(136)

我想向Express.js的response对象添加一个body属性,每次调用send method is called时都会调用该属性,我通过添加以下代码作为中间件来实现这一点,
但是由于某种原因,当我调用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();
    });
vql8enpb

vql8enpb1#

您可能会使用类似于以下内容的内容:

res.send({ foo : 'bar' });

换句话说,您要将一个对象传递给res.send
这将执行以下操作:

  • 以对象作为参数调用res.send
  • res.send检查参数类型,发现它是一个对象,并将其传递给res.json
  • res.json将对象转换为JSON字符串,并再次调用res.send,但这次使用JSON字符串作为参数
vlju58qv

vlju58qv2#

你必须使用res.json(body)。它将把body作为响应主体发送。确保主体应该是对象。

相关问题