当前位置: 首页 > 面试题库 >

使用Express,Node.JS和Require模块进行外部API调用

齐泰
2023-03-14
问题内容

我有一条路线如下:

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

router.get('/', function(req, res, next) {
  request({
    uri: 'http://www.giantbomb.com/api/search',
    qs: {
      api_key: '123456',
      query: 'World of Warcraft: Legion'
    },
    function(error, response, body) {
      if (!error && response.statusCode === 200) {
        console.log(body)
      }
    }
  });
});

module.exports = router;

我正在尝试对Giant Bomb API进行API调用,以获取有关魔兽世界的所有数据。

问题是,路线刚刚加载;它什么也没做,也没有超时,只是连续加载。

我不知道我在做什么错,但是话虽这么说……我也不知道什么是对的。我在努力学习。

任何帮助都会很棒。

谢谢


问题答案:

您需要获取从中获取的数据request(),并将其作为对原始Web服务器请求的响应发送回去。因为您从未发送任何对原始请求的响应,所以它一直在加载,因此浏览器只是坐在那里等待响应返回,最终它将超时。

由于request()支持流,因此您可以非常简单地使用以下命令将数据作为响应发送回.pipe()

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

router.get('/', function(req, res, next) {
  request({
    uri: 'http://www.giantbomb.com/api/search',
    qs: {
      api_key: '123456',
      query: 'World of Warcraft: Legion'
    }
  }).pipe(res);
});

module.exports = router;

这将.pipe()request()结果到res对象,它会成为原来的HTTP请求的响应。



 类似资料:
  • 我假设有很多情况需要调用基于值列表的外部RESTful服务。 现在对于这些productId中的每一个,我想并行调用一个外部endpoint。大致如下: 你会如何转换这个 到 当所有通话成功完成时。 一个人如何使用可完成的未来来实现这一点? 我想我要问的是,如何等待所有调用完成,然后以集合的形式获得结果。

  • 目标 建立一个 lesson2 项目,在其中编写代码。 当在浏览器中访问 http://localhost:3000/?q=alsotang 时,输出 alsotang 的 md5 值,即 bdd5e57b5c0040f9dc23d430846e68a3。 挑战 访问 http://localhost:3000/?q=alsotang 时,输出 alsotang 的 sha1 值,即 e3c766

  • 问题内容: 我已经通过使用nodejs + express制作了简单的nodejs应用程序。现在,我要进行用户身份验证。我想通过使用猫鼬来实现会话处理。你能举个例子吗? 问题答案: 一些有用的链接: 如何在node.js中实现登录身份验证 在node.js和mongodb中创建注册和登录表单 另外,会话管理不是由Mongoose完成,而是由connect-mongodb或connect- redi

  • 问题内容: 我正在尝试编写一个程序,该程序使用mongoose从mongo数据库中获取文档,并使用API​​对其进行处理,然后使用处理结果编辑数据库中的每个文档。我的问题是我有问题,因为我不完全了解nodejs和异步。这是我的代码: 问题在于,在findOneAndUpdate中,tweets是未定义的,因此无法找到该ID。有什么办法吗?谢谢 问题答案: 您真正缺少的核心是Mongoose API

  • 问题内容: 我正在尝试获取登录到我的应用程序中的用户的Facebook个人资料图片。Facebook的API声明返回正确的URL作为JSON对象。 我想从代码中获取图片的URL。我尝试了以下操作,但这里缺少内容。 运行此代码将导致以下结果: 问题答案: 回调中的参数不是正文,而是一个http.ClientResponse对象。您需要组装车身:

  • 问题内容: 使用机器学习库PyML时遇到一个烦人的问题。PyML使用libsvm来训练SVM分类器。问题是libsvm将一些文本输出到标准输出。但是因为那是在Python之外,所以我无法拦截它。我尝试使用问题Python中描述的方法使函数的标准输出静音,而不破坏sys.stdout并恢复每个函数调用, restori)但这些方法均无济于事。 有什么办法可以做到这一点。不能修改PyML。 问题答案: