NodeJS / ExpressJS - Отправить ответ http-запроса обратно клиенту - PullRequest
0 голосов
/ 04 января 2019

Я создал сайт, используя Angular 2, и я использую nodejs в качестве бэкэнда.

Мне удалось отправить запрос от углового клиента на сервер nodejs и перенаправить его из nodejs в другое приложение через http-запрос. Теперь моя цель - отправить ответ от третьего приложения обратно на страницу углового клиента (мне также удалось получить ответ от третьего приложения), но я новичок в nodejs / express, и мне не удалось получить Тело ответа из http-запроса и отправка его обратно клиенту angular.

На сервере nodejs у меня есть следующий код (в основном, глядя на учебники):

app.route('/api/test').post((req, res) => {
   postCode(JSON.stringify(req.body));
   //Here I want to send back the response from the third application
   //to the Angular client (instead of 'Hi')
   res.status(200).send('Hi');
});

function postCode(post_data) {

const post_options = {
   host: '127.0.0.1',
   port: '8080',
   path: '/test',
   method: 'POST',
   headers: {
      'Content-Type': 'application/json',
      'Content-Length': Buffer.byteLength(post_data)
   }
};

// Set up the request
const post_req = http.request(post_options, function (res) {
   res.setEncoding('utf8');
   let responseString = ''
   res.on('data', function (data) {
      responseString += data;
      console.log('Response data: ' + responseString);
   });
   res.on("end", function (data) {
      responseString += data;
      console.log('Response end: ' + responseString);
   });
});

// post the data
post_req.write(post_data);
post_req.end();
}

Итак, как теперь мне удается «использовать» ответ http-запроса и отправить его обратно в метод app.route ('/ api / arq'). Post клиенту angular (см. Также первый комментарий в коде)?

Большое спасибо и

С уважением, Ясмин

Ответы [ 2 ]

0 голосов
/ 04 января 2019
  console.log('Response end: ' + responseString);

Строка выше - это точка, в которой у вас есть данные, которые вы хотите отправить в своем ответе.

Так что отправьте ответ туда , а не сразу после звонка postCode.

0 голосов
/ 04 января 2019

РЕДАКТИРОВАТЬ: похоже, что на этот аналогичный шаблон уже отвечали - Внешние вызовы API с Express, Node.JS и Require Module благодаря @madflow за его поиск.

Прежде всего, на мой взгляд, вы выполняете дополнительную работу, почему бы не использовать фреймворк, такой как express.js?

В любом случае, я бы отправил запрос вашей третьей стороне из конечной точки /api/arq, позвонив по номеру http.request после получения запроса внутри маршрута и внутри res.on("end"..., передайте ответ.

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