Reputation: 4942
How to make http request(s) to get data from remote server(s) and after that pass requested data as view data in express js?
For example code where view is rendered with static data:
var express = require('express');
var router = express.Router();
var news = [{id: 1, title: 'News title'}];
router.get('/', function(req, res, next) {
res.render('index', { title: 'Main page', news: news });
});
module.exports = router;
Upvotes: 3
Views: 5828
Reputation: 203484
For instance, using request
:
var request = require('request');
router.get('/', function(req, res, next) {
request(URL, function (err, response, body) {
if (err || response.statusCode !== 200) {
return res.sendStatus(500);
}
res.render('index', { title : 'Main page', news : JSON.parse(body) });
});
});
To perform multiple requests, you could use async.map()
:
var request = require('request');
var async = require('async');
router.get('/', function(req, res, next) {
var URLS = [ 'http://...', 'http://...', ... ];
async.map(URLS, function(url, done) {
request(url, function (err, response, body) {
if (err || response.statusCode !== 200) {
return done(err || new Error());
}
return done(null, JSON.parse(body));
});
}, function(err, results) {
if (err) return res.sendStatus(500);
res.render('index', { title : 'Main page', news : results });
});
});
Upvotes: 5