如何在快递服务器内进行外部 API 调用?

新手上路,请多包涵

您好,我一直在尝试在我的仪表板上实现 OneSignal API,我想知道是否可以在 Express 服务器内进行 API 外部调用。

这是一个例子:

 var sendNotification = function(data) {
  var headers = {
    "Content-Type": "application/json; charset=utf-8",
    "Authorization": "Basic NGEwMGZmMjItY2NkNy0xMWUzLTk5ZDUtMDAwYzI5NDBlNjJj"
  };

  var options = {
    host: "onesignal.com",
    port: 443,
    path: "/api/v1/notifications",
    method: "POST",
    headers: headers
  };

  var https = require('https');
  var req = https.request(options, function(res) {
    res.on('data', function(data) {
      console.log("Response:");
      console.log(JSON.parse(data));
    });
  });

  req.on('error', function(e) {
    console.log("ERROR:");
    console.log(e);
  });

  req.write(JSON.stringify(data));
  req.end();
};

这是应用程序路线

app.post('/path', function(req, res){

var message = {
  app_id: "5eb5a37e-b458-11e3-ac11-000c2940e62c",
  contents: {"en": "English Message"},
  included_segments: ["All"]
};

sendNotification(message);
});

谢谢!

原文由 enrico_alvarenga 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 408
1 个回答

我想知道是否可以在 express 服务器内部进行 API 外部调用。

当然,您可以使用 http.request() 从 node.js 应用程序联系任何外部服务器,就像您正在展示的那样,或者构建在其之上的更高级别的模块之一,例如 请求模块

这是请求模块主页中的一个简单示例:

 const request = require('request');
request('http://www.google.com', function (error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log(body) // Show the HTML for the Google homepage.
  }
});

或者,使用承诺:

  const rp = require('request-promise');
 rp('http://www.google.com').then(body => {
     console.log(body);
 }).catch(err => {
     console.log(err);
 });


编辑 2020 年 1 月 - request() 模块处于维护模式

仅供参考, request 模块及其衍生物,如 request-promise 现在处于维护模式,不会积极开发以添加新功能。您可以在 此处 阅读有关推理的更多信息。 此表 中有一个备选方案列表,并对每个备选方案进行了一些讨论。我一直在使用 got() 我自己,它是从一开始就使用 promises 构建的,并且易于使用。

原文由 jfriend00 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题