Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Node express request call inside get

I'm trying to use nodejs as a layer between my public website and a server on the inside of our network.

I'm using express.js to create a simple REST api. The API endpoint should trigger a request call to a webservice, and return the result.

But the request call inside my .get() function doesn't do anything.

I want to return the result from the nested call to be returned.

Code:

// Dependencies
var express = require('express');
var bodyParser = require('body-parser');
var request = require('request');
//Port
var port = process.env.PORT || 8080;  

// Express
var app = express();
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());


// Routes
app.get('/invoice', function(req, res){
   res.send('Express is workiung on IISNode')
});


app.get('/invoice/api/costumer=:customerId&invoice=:invoiceId',  function(req, res){
       res.send('Customer ID: ' + req.params.customerId + ' Invoice ID: '+ req.params.invoiceId)

      var url = 'http://xxx/invapp/getinvoice?company='+req.params.customerId+'S&customerno=13968&invoiceno='+req.params.invoiceId+'';
      request('http://www.google.com', function (error, response, body) {
      res.send(body);

      })

});

 // Start server
app.listen(port);
console.log("API is running on port " + port);

Any suggestions?

like image 430
TietjeDK Avatar asked Aug 31 '16 12:08

TietjeDK


1 Answers

You can write in this way

// Dependencies
var express = require('express');
var bodyParser = require('body-parser');
var request = require('request');
//Port
var port = process.env.PORT || 8080;  

// Express
var app = express();
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());


// Routes
app.get('/invoice', function(req, res){
   res.send('Express is working')
});


app.get('/invoice/api/costumer=:customerId&invoice=:invoiceId',  function(req, res){

      var url = 'http://xxx/invapp/getinvoice?company='+req.params.customerId+'S&customerno=13968&invoiceno='+req.params.invoiceId+'';
      request(url, function (error, response, body) {
        var data={
          body:body,
          customerID:req.params.customerId,
          invoiceID:req.params.invoiceId
        };
      res.send(data);
      });    
});

 // Start server
app.listen(port);
console.log("API is running on port " + port);
like image 174
abdulbarik Avatar answered Sep 27 '22 22:09

abdulbarik