Node.jsを使用して2つのREST APIを接続するスタンドアロンアプリを作成することは理にかなっていますか?Node.jsを使用してREST APIに接続する
一端がPOSになります - 販売のポイント - システム
他のホストされた電子商取引プラットフォーム
されるサービスの設定のための最小限のインターフェイスがあります。これ以上何もない。
Node.jsを使用して2つのREST APIを接続するスタンドアロンアプリを作成することは理にかなっていますか?Node.jsを使用してREST APIに接続する
一端がPOSになります - 販売のポイント - システム
他のホストされた電子商取引プラットフォーム
されるサービスの設定のための最小限のインターフェイスがあります。これ以上何もない。
はい、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);
});
});
それは単純なラッパーのライブラリーを見つけることが意味をなす(または独自に書く)あなたはこれらの呼び出しの多くを作るしようとしている場合があります。
よく説明しました+1 – AndrewMcLagan
ノードのイベントモデルには本当に暖かいです。このようにデータがチャンクされたときストリームが終了する前に操作を開始することは可能ですか?それは順番に到着しますか? – AndrewMcLagan
ありがとう!はい、データは順番にストリームされます。ストリーミングが完了する前にデータを使用できるのであれば、それ以前にそれを扱うことができなかった理由はわかりません(私は個人的にまだそれを使用していませんでしたが)。 –
Node.jsのAPIは、HTTPリクエストを作成するメソッドが含まれています。
私はあなたが書いているアプリがWebアプリケーションであると仮定します。 Expressのようなフレームワークを使用して、不快な作業の一部を削除することもできます(this question on node.js web frameworksも参照してください)。
もっと簡単で便利なツールは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,
});
});
はい、問題はありません。なぜあなたはその目的のためにnode.jsを使用できないのか分かりません。 –