【问题标题】:How to pipe one response to another response in Express如何在 Express 中将一个响应传递给另一个响应
【发布时间】:2018-05-10 15:24:22
【问题描述】:

有没有一种方法可以让我在 Express 路由处理程序中分派 REST 请求,然后拦截响应以应用自定义逻辑或将其按原样通过 res 管道?

我想我可以将 REST 响应的所有不同部分复制到 res(即标题、状态代码、正文等),但我不知道我需要的所有部分复制以准确克隆响应。某种自动机制更可取。

import { Client } from 'node-rest-client-promise';

app.get('/', async (req, res, next) => {
  const client = new Client();
  const { response } = await this.client.getPromise(url);

  switch (response.statusCode) {
    case 404:
      // Intercept and replace code and body.
      res.status(200).send('Other results');
      return;
    default:
      // Otherwise pipe REST response to res.
      response.pipe(res);
      return;
  }
});

对于除 404 之外的任何类型的 REST 响应,此代码 sn-p 最终只返回一个带有空主体的 200 代码。

注意:我没有必要使用node-rest-client-promise,但为了简单起见,我更愿意使用。

【问题讨论】:

  • 对于.pipe(),您需要一个将响应放入 node.js 流的请求库。 node-rest-client-promise 似乎没有这样做。 request() 库确实提供了一个流,甚至向您显示 how to use .pipe() here

标签: node.js rest express


【解决方案1】:

我使用request 包来执行我的HTTP 请求,然后按照您所写的那样执行response.pipe(res);。 效果很好

【讨论】:

    猜你喜欢
    • 2018-09-18
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    相关资源
    最近更新 更多