NodeJS / ExpressJS-将http请求的响应发送回客户端

时间:2019-01-04 15:46:35

标签: javascript node.js express

我使用Angular 2创建了一个wesite,并且使用nodejs作为后端。

我设法将请求从角度客户端发送到nodejs服务器,并通过http请求将其从nodejs转发到另一个应用程序。我现在的目标是将第三个应用程序的响应发送回有角度的客户端页面(我也设法从第三个应用程序获取响应),但是我是nodejs / express中的newby,因此无法获取http请求中的响应正文,并将其发送回有角度的客户端。

在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方法发送回角度客户端(请参阅第一条评论)在代码中)?

非常感谢您

亲切的问候, 亚瑟敏

2 个答案:

答案 0 :(得分:0)

编辑:似乎已经回答了类似的模式-External API Calls With Express, Node.JS and Require Module感谢@madflow找到了它。

首先,我认为您要做一些额外的工作,为什么不使用express.js之类的框架?

无论如何-我要做的是将请求从/api/arq端点内发送给您的第三方,在路由内收到请求后调用http.request,并在res.on("end"...内部传递一起回答。

答案 1 :(得分:0)

  console.log('Response end: ' + responseString);

以上一行是您要在响应中发送数据的地方。

因此,发送答复那里,而不是在致电postCode之后立即发送。