如何发出http请求从远程服务器获取数据,然后将请求的数据作为express js中的视图数据传递?
例如,使用静态数据呈现视图的代码:
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;
Run Code Online (Sandbox Code Playgroud)
例如,使用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) });
});
});
Run Code Online (Sandbox Code Playgroud)
要执行多个请求,您可以使用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 });
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5819 次 |
| 最近记录: |