【问题标题】:How to GET JSON Object from URL in Node.js/Express如何从 Node.js/Express 中的 URL 获取 JSON 对象
【发布时间】:2016-10-01 09:21:42
【问题描述】:

我应该先说我是初学者,这是我第一次在实际项目中使用 Node.js 和 Express。

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

我在网上阅读了有关“请求”模块的信息,并且知道我需要按照以下方式做一些事情:

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
    }
  })
});

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

我的问题是:

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

  2. 如何将我从该代码所在位置构建的 URL 导出到我的 .jade 视图?

【问题讨论】:

  • “将 JSON 读入我的应用程序”和“如何导出从哪里构建的 URL”是什么意思?

标签: javascript json node.js express pug


【解决方案1】:

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

您需要重构 '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 调用收到此响应。 AJAX 调用可以在来自 testapi.jade 文件的 Javascript 文件中定义。

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

【讨论】:

  • 我想我现在明白了,所以我已经在客户端应用程序中拥有我的 JSON 并且可以在那里处理我的业务逻辑。说得通。我将不得不使用 AJAX - 对这类事情仍然很陌生。在 node/express 中是否有此类事情的推荐链接?
猜你喜欢
  • 2020-05-11
  • 2016-11-16
  • 1970-01-01
  • 2013-03-15
  • 2023-02-26
  • 1970-01-01
  • 2016-08-18
相关资源
最近更新 更多