修改express / nodejs中的响应

时间:2017-05-24 11:46:28

标签: node.js api express

我使用express在Nodejs中制作多个streamdata。

这就是我如何制作网址:

app.get('/temp/1', function(req, res){
  res.send('hello, i am not modified')
})

我的问题是:是否可以修改该网址的响应?

我试过这样:

app.get(/modify/1, function(req, res){  
    app.get('/temp/1', function(req, res){
       res.send('hello, i am modified')
    })    
  res.send('done');
}

所以我认为响应已经改变,但实际上没有任何反应。 有没有办法实现它?

1 个答案:

答案 0 :(得分:0)

以下是使用express-modify-response的示例:

const modifyResponse = require('express-modify-response');
...

let modify = modifyResponse(
  function(req, res)       { return true }, // always modify the response
  function(req, res, body) { return 'hello, i am modified' } // the new response
);

app.get('/temp/1', modify, function(req, res){
  res.send('hello, i am not modified')
})

编辑:第二次尝试。您有一个发送特定响应的端点/temp/1,并且您希望端点/modify/1能够接收该响应并对其进行修改。

这需要一些抽象:

function someFunction(id) {
  return 'hello, i am not modified';
}

app.get('/temp/1', function(req, res) {
  res.send(someFunction(1));
});

app.get('/modify/1', function(req, res) {
  let value = someFunction(1);

  // Remove the word `not`.
  value = value.replace(/not /, '');

  res.send(value);
});

因此两个处理程序使用相同的函数,它提供实际输出,但/modify/1在将输出返回给客户端之前修改输出。