繁体   English   中英

如何从Node.js / Express中的URL获取JSON对象

[英]How to GET JSON Object from URL in Node.js/Express

我应该在帖子前面说我是初学者,这是我第一次在一个真实的项目中使用Node.js和Express。

我有一个简单的Node.js / Express项目,我想从URL读取一个JSON对象。 之后,我打算使用iframe构建另一个显示外部网站html的网址。

我在线阅读了“请求”模块,并知道我需要按照以下方式做一些事情:

var express = require('express');
var router = express.Router();
var request = require('request');

// Urls for App Center REST functions
var url = 'https://someserver.com/appserver/portal/api/1.0/results/recent';

/* GET list of recent reports */
router.get('/testapi', function(req, res, next) {
  res.render('testapi', { title: 'List Recent Reports' });
});

/* TEST: function to GET report list */
router.get('/recentreports', function(req, res){
  request({
    url: url,
    json: true
  }, function (error, response, body) {
      if (!error && response.statusCode === 200) {
        console.log(body) // Print the json response
    }
  })
});

我试图定义一个在testapi.jade视图中调用的函数/recentreports testapi.jade ,但是当我加载页面时,控制台中没有打印任何内容,我怀疑我正在做一些可怕的错误。

我的问题是:

  1. 如何将JSON读入我的应用程序以及此代码的位置(index.js,app.js,testview.jade等...?)

  2. 如何将我构建的URL从代码所在的任何地方导出到我的.jade视图?

没有任何内容记录到浏览器控制台,因为没有从您的服务器发送响应。 响应仅记录到服务器的控制台。

您需要重构'recentreports'路由的代码才能发送数据。 您可以使用简单的res.send调用:

...
function (error, response, body) {
  if (!error && response.statusCode === 200) {
    res.send(body) // Send the response to the client
  }
}
...

testapi.jade通过对'/recentreports'路径的AJAX调用接收此响应。 可以在testapi.jade文件源代码的Javascript文件中定义AJAX调用。

构造的URL不需要导出,因为它存在于同一个testapi.jade文件中(在您从AJAX调用的结果中形成它之后)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM