ノーコードでクラウド上のデータとの連携を実現。
詳細はこちら →こんにちは!ドライバー周りのヘルプドキュメントを担当している古川です。
CData API Server とADO.NET Provider for XML(もしくは250+ の他のADO.NET Providers)を使って、XML をOData エンドポイントして公開し、Node.js からシンプルなHTTP リクエストでクエリを実現します。本記事ではAPI Server を使ってJSON でフォーマットされたXML データをNode.js でリクエストする方法を説明します。
以下のステップに従って、安全なXML OData サービスの作成を開始します。
API サーバーは独自のサーバーで実行されます。Windows では、スタンドアロンサーバーまたはIIS を使用して展開できます。Java サーブレットコンテナで、API Server WAR ファイルをドロップします。詳細とハウツーについては、ヘルプドキュメントを参照してください。
API Server は、Microsoft Azure、Amazon EC2、Heroku にも簡単にデプロイできます。
API サーバーとADO.NET Provider for XML を展開した後、[Settings]->[Connections]をクリックし、API サーバー管理コンソールで新しい接続を追加してXML に接続するために必要な認証値とその他の接続プロパティを指定します。
データソースを認証するには、データプロバイダーのドキュメント内の「はじめに」セクションをご覧ください。 データプロバイダーはXML API を双方向データベーステーブルとしてモデル化し、XML ファイルをread-only ビュー(ローカルファイル、人気のクラウドサービスに格納されたファイル、およびFTP サーバー)としてモデル化します。 HTTP Basic、Digest、NTLM、OAuth、およびFTP を含む主な認証スキームはサポートされています。認証のガイドについては、データプロバイダーのドキュメント内の「はじめに」セクションをご覧ください。
URI と認証値を設定した後で、DataModel を設定することでデータの構造によりよくマッチするようデータの抽象化を調整できます。
DataModel プロパティはデータがどのようにテーブルとして抽象化されるかを制御するプロパティであり、次の基本的な設定を調整します。
リレーショナルな抽象化の設定についての詳細は、「XML データのモデリング」セクションを参照してください。次の例で使用されているサンプルデータも存在します。 このデータには、人名、その人たちが所有する車、車に施されたさまざまなメンテナンスに関する情報が含まれます。
次に、[Settings]->[Resources]をクリックして、API サーバーへのアクセスを許可するXML エンティティを選択できます。
作成するOData サービスを決定したら、[Settings]->[Users]をクリックしてユーザーを承認します。API サーバーは、認証トークンベースの認証を使用して主要な認証スキームをサポートします。IP アドレスに基づいてアクセスを制限することもできます。ローカルマシンを除くすべてのIP アドレスはデフォルトで制限されています。SSL を使用して、接続を認証及び暗号化することができます。
OData フィードはNode.js で簡単に使用できます。Node.js のHTTP クライアントを使用して、API サーバーのOData エンドポイントからJSON 形式のデータをリクエストできます。リクエストを行った後、レスポンスの本文を作成し、JSON.parse() 関数を呼び出してレコードに解析できます。
以下のコードはpeople データに対して認証されたリクエストを行います。 以下のURL の例では、[ personal.name.last ] カラムの値がRoberts のレコードを検索する単純なフィルターを適用しています。
var http = require('http');
http.get({
protocol: "http:",
hostname:"MyServer.com",
port:MyPort,
path: "/api.rsc/people?$filter=" + encodeURIComponent("[ personal.name.last ] eq 'Roberts'"),
auth:'MyUser:MyAuthtoken'
},
function(res) {
var body = '';
res.on('data', function(chunk) {
body += chunk;
});
res.on('end', function() {
console.log(body);
var jsonData = JSON.parse(body);
});
}).on('error', function(e) {
console.log("Error: ", e);
});