2013-04-22 17 views
8

Node.jsを使用して2つのREST APIを接続するスタンドアロンアプリを作成することは理にかなっていますか?Node.jsを使用してREST APIに接続する

一端がPOSになります - 販売のポイント - システム

他のホストされた電子商取引プラットフォーム

されるサービスの設定のための最小限のインターフェイスがあります。これ以上何もない。

+0

はい、問題はありません。なぜあなたはその目的のためにnode.jsを使用できないのか分かりません。 –

答えて

23

はい、Node.jsは外部APIを呼び出すのに適しています。ただし、Node内のすべての機能と同様に、これらの呼び出しを行う関数はイベントを基にしています。これは、完了した単一の応答を受け取るのではなく、応答データをバッファリングすることを意味します。例えば

// get walking directions from central park to the empire state building 
var http = require("http"); 
    url = "http://maps.googleapis.com/maps/api/directions/json?origin=Central Park&destination=Empire State Building&sensor=false&mode=walking"; 

// get is a simple wrapper for request() 
// which sets the http method to GET 
var request = http.get(url, function (response) { 
    // data is streamed in chunks from the server 
    // so we have to handle the "data" event  
    var buffer = "", 
     data, 
     route; 

    response.on("data", function (chunk) { 
     buffer += chunk; 
    }); 

    response.on("end", function (err) { 
     // finished transferring data 
     // dump the raw data 
     console.log(buffer); 
     console.log("\n"); 
     data = JSON.parse(buffer); 
     route = data.routes[0]; 

     // extract the distance and time 
     console.log("Walking Distance: " + route.legs[0].distance.text); 
     console.log("Time: " + route.legs[0].duration.text); 
    }); 
}); 

それは単純なラッパーのライブラリーを見つけることが意味をなす(または独自に書く)あなたはこれらの呼び出しの多くを作るしようとしている場合があります。

+0

よく説明しました+1 – AndrewMcLagan

+0

ノードのイベントモデルには本当に暖かいです。このようにデータがチャンクされたときストリームが終了する前に操作を開始することは可能ですか?それは順番に到着しますか? – AndrewMcLagan

+0

ありがとう!はい、データは順番にストリームされます。ストリーミングが完了する前にデータを使用できるのであれば、それ以前にそれを扱うことができなかった理由はわかりません(私は個人的にまだそれを使用していませんでしたが)。 –

1

Node.jsのAPIは、HTTPリクエストを作成するメソッドが含まれています。

私はあなたが書いているアプリがWebアプリケーションであると仮定します。 Expressのようなフレームワークを使用して、不快な作業の一部を削除することもできます(this question on node.js web frameworksも参照してください)。

-1

もっと簡単で便利なツールはUnirestのようなAPIを使用するだけです。 URestはNPMのパッケージで、jusのように簡単に使用できます。

app.get('/any-route', function(req, res){ 
    unirest.get("https://rest.url.to.consume/param1/paramN") 
     .header("Any-Key", "XXXXXXXXXXXXXXXXXX") 
     .header("Accept", "text/plain") 
     .end(function (result) { 
     res.render('name-of-the-page-according-to-your-engine', { 
     layout: 'some-layout-if-you-want', 
     markup: result.body.any-property, 
    }); 

});

+0

"res"は未定義です! – Kasra

+0

あなたは 'app.get( '/'、auth.protected、function(req、res){ \t }のルートにそれを置く必要があります)' –

+0

コードを編集して更新してください。 – Kasra

関連する問題