Как передать один ответ другому в Express? - PullRequest
0 голосов
/ 10 мая 2018

Есть ли способ, которым я могу отправить, скажем, запрос REST внутри обработчика маршрута Express, а затем либо перехватить ответ, чтобы применить пользовательскую логику, либо перенаправить его через res?

* 1003.* Я предполагаю, что мог бы скопировать все различные части ответа 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;
  }
});

Этот фрагмент кода заканчивается просто возвратом кода 200 с пустым телом для любого типа ответа REST, кроме 404.

ПРИМЕЧАНИЕ: нет необходимости использовать node-rest-client-promise, но я бы предпочел для простоты.

1 Ответ

0 голосов
/ 10 мая 2018

Я использую пакет request для выполнения моего HTTP-запроса, а затем просто response.pipe(res);, как вы написали. Работает просто отлично

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...