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
相关产品推荐
相关产品推荐

