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;
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 });
});
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With