node.js - Express.js- 添加响应主体

标签 node.js express

我想在 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/

相关文章:

javascript - Express.js - Helmet.js 和其他中间件,以及安装的应用程序?

javascript - Express 3 的跨 session 问题

html - AngularJS 文件上传到后端 Express 服务器

javascript - Node MySQL—— promise 永无止境

node.js - 找不到模块(nodejs)

node.js - 无法在 Windows 上使用 Electron 4.0.6 加载某些 native Node js 模块

node.js - CSRF 中间件导致麻烦 Node.JS + Express

Node.js 多中间件导出模式

node.js - 如何从Windows命令行将参数传递给node.js

node.js - 使用 NodeJS 和 S3FS/multiparty 将文件上传到 Amazon S3