web-dev-qa-db-ja.com

エクスプレスサーバー内で外部API呼び出しを行う方法

こんにちは、ダッシュボードにOneSignal APIを実装しようとしていますが、エクスプレスサーバー内で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);
});

ありがとうございました!

13

エクスプレスサーバー内でAPI外部呼び出しを行うことは可能かと思います。

もちろん、表示しているhttp.request()または request module のようなその上に構築された上位モジュールのいずれかを使用して、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);
 });
14
jfriend00

axiosはブラウザとnode.js用のPromiseベースのHTTPクライアントであるため、Axiosクライアントを使用できます。

Promisesを使用することは、より複雑な一連のイベントを必要とするコードを扱う場合に大きな利点です。非同期コードの記述は混乱を招く可能性があり、Promiseはこの問題に対するいくつかの解決策の1つです。

最初にnpm install axios --saveを使用してアプリケーションにAxiosをインストールします

そして、あなたはこのコードを使用することができます

const axios = require('axios');

axios.get('api-url')
    .then(response => {
        console.log(response.data.status);
        // console.log(response.data);
        res.send(response.data.status);
    })
    .catch(error => {
        console.log(error);
    });
4
GUDDU RAJ

このソリューションをお試しください。私はそれを使用し、それは私のために働いた。

var Request = require("request");

Request.get("http://httpbin.org/ip", (error, response, body) => {
    if(error) {
        return console.dir(error);
    }
    console.dir(JSON.parse(body));
});
1