You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Express GET请求中res.body为undefined问题及修改尝试

解决Express中间件无法修改响应体的问题
  • 你直接操作res.body没用,因为Express默认不会把响应内容挂载到res.body属性上——req.body是靠body-parser这类中间件处理请求体才生成的,响应体本身不会自动存在res.body里,所以你打印它自然没输出。

  • 正确的做法是重写响应发送方法,在内容实际发送前修改:

function modify(req, res, next) {
  // 保存原始的send方法
  const originalSend = res.send;
  
  res.send = function(body) {
    // 追加修改内容
    const modifiedBody = body + "modified";
    // 调用原始方法发送修改后的内容
    originalSend.call(this, modifiedBody);
  };
  
  next();
}
  • 如果你的响应是JSON格式,需要先解析再修改,避免直接拼接字符串破坏结构:
function modify(req, res, next) {
  const originalSend = res.send;
  
  res.send = function(body) {
    let modifiedBody;
    if (typeof body === 'object' && body !== null) {
      // 给JSON对象添加字段或修改内容
      body.modified = true;
      modifiedBody = JSON.stringify(body);
    } else {
      // 普通文本直接追加
      modifiedBody = body + "modified";
    }
    originalSend.call(this, modifiedBody);
  };
  
  next();
}

内容的提问来源于stack exchange,提问作者Ndjxh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 05:40:33