8

我正在为 NodeJS 使用mikeal 的很棒的请求模块。我还将它与express一起使用,我正在代理对 API 的调用,以解决旧浏览器的 CORS 问题:

app.use(function(request, response, next) {
  var matches = request.url.match(/^\/API_ENDPOINT\/(.*)/),
      method = request.method.toLowerCase(),
      url;

  if (matches) {
    url = 'http://myapi.com' + matches[0];

    return request.pipe(req[method](url)).pipe(response);
  } else {
    next();
  }
});

有没有一种方法可以在我将request' 的响应传回之前修改正文express

4

2 回答 2

12

基于这个答案:在 node.js 中输出之前更改响应正文我做了一个我在自己的应用程序上使用的工作示例:

app.get("/example", function (req, resp) {
  var write = concat(function(response) {
    // Here you can modify the body
    // As an example I am replacing . with spaces
    if (response != undefined) {
      response = response.toString().replace(/\./g, " ");
    }
    resp.end(response);
  });

  request.get(requestUrl)
      .on('response',
        function (response) {
          //Here you can modify the headers
          resp.writeHead(response.statusCode, response.headers);
        }
      ).pipe(write);
});

欢迎任何改进,希望对您有所帮助!

于 2013-11-06T20:27:10.417 回答
2

您可能想要使用转换流。经过一番谷歌搜索后,我发现了以下博客文章

于 2013-08-09T12:00:42.603 回答