【发布时间】: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。