2017-06-30 1 views
0

Ich versuche, Daten von RESTful API anfordern und das Ergebnis auf HTML-Webseite mit Node.js teilen. Mein Code läuft gut, aber ich möchte diese RESTful-Anfrage immer dann machen, wenn ich die Webseite aufruft, nicht nur, wenn ich einen Node.js-Server betreibe.Consuming restfull API und teilen Sie das Ergebnis auf der Webseite mit Node.js

var http = require('http'); 
var ejs = require('ejs'); 
var fs = require('fs'); 
var request = require("request"); 
var temp = ""; 

var options = { method: 'GET', 
    url: 'My_URL', 
    headers: { authorization: 'Basic My_Autho' } 
}; 

request(options, function (error, response, body) { 
    if (error) throw new Error(error); 
    temp = body; 
    console.log(body); 
}); 

http.createServer(function(req,res) { 
    res.writeHead(200, {'Content-Type': 'text/html' 
}); 

fs.readFile('index.html', 'utf-8', function(err, content) { 
if (err) { 
    res.end('error occurred'); 
    return; 
} 

var renderedHtml = ejs.render(content, {temp: temp}); 
res.end(renderedHtml); 
}); 
}).listen(8000); 

Antwort

0

Vielleicht könnten Sie Ihren Aufruf an die externe REST-API im Request-Handler verschieben?

var http = require('http'); 
var ejs = require('ejs'); 
var fs = require('fs'); 
var request = require("request"); 
var temp = ""; 

var options = { method: 'GET', 
    url: 'My_URL', 
    headers: { authorization: 'Basic My_Autho' } 
}; 

http.createServer(function(req,res) { 
    res.writeHead(200, {'Content-Type': 'text/html'}); 

    request(options, function (error, response, body) { 
    if (error) throw new Error(error); 
    temp = body; 
    console.log(body); 

    fs.readFile('index.html', 'utf-8', function(err, content) { 
     if (err) { 
     res.end('error occurred'); 
     return; 
     } 

     var renderedHtml = ejs.render(content, {temp: temp}); 
     res.end(renderedHtml); 
    }); 
    }); 
}).listen(8000); 
+0

Tanks, es funktioniert gut. Aber wer kann ich viele Anfragen als Schleife hinzufügen. Nehmen wir an, wir haben var options [] und sollten für alle Objekte in options [] eine Anfrage machen. –

Verwandte Themen