Node.js からXML データをクエリ



CData API Server

API Server は、データを外部に公開します。CData API Server のOData エンドポイントを使って、Node.js からXML へのCRUD クエリを実行します。

CData API Server とADO.NET Provider for XML(もしくは230+ の他のADO.NET Providers)を使って、XML をOData エンドポイントして公開し、Node.js からシンプルなHTTP リクエストでクエリを実現します。本記事ではAPI Server を使ってJSON でフォーマットされたXML データをNode.js でリクエストする方法を説明します。

API サーバーをセットアップ

以下のステップに従って、安全なXML OData サービスの作成を開始します。


API サーバーは独自のサーバーで実行されます。Windows では、スタンドアロンサーバーまたはIIS を使用して展開できます。Java サーブレットコンテナで、API Server WAR ファイルをドロップします。詳細とハウツーについては、ヘルプドキュメントを参照してください。

API Server は、Microsoft AzureAmazon EC2Heroku にも簡単にデプロイできます。

XML に接続

API サーバーとADO.NET Provider for XML を展開した後、[Settings]->[Connections]をクリックし、API サーバー管理コンソールで新しい接続を追加してXML に接続するために必要な認証値とその他の接続プロパティを指定します。

See the Getting Started chapter in the data provider documentation to authenticate to your data source: The data provider models XML APIs as bidirectional database tables and XML files as read-only views (local files, files stored on popular cloud services, and FTP servers). The major authentication schemes are supported, including HTTP Basic, Digest, NTLM, OAuth, and FTP. See the Getting Started chapter in the data provider documentation for authentication guides.

After setting the URI and providing any authentication values, set DataModel to more closely match the data representation to the structure of your data.

The DataModel property is the controlling property over how your data is represented into tables and toggles the following basic configurations.

  • Document (default): Model a top-level, document view of your XML data. The data provider returns nested elements as aggregates of data.
  • FlattenedDocuments: Implicitly join nested documents and their parents into a single table.
  • Relational: Return individual, related tables from hierarchical data. The tables contain a primary key and a foreign key that links to the parent document.

See the Modeling XML Data chapter for more information on configuring the relational representation. You will also find the sample data used in the following examples. The data includes entries for people, the cars they own, and various maintenance services performed on those cars.

次に、[Settings]->[Resources]をクリックして、API サーバーへのアクセスを許可するXML エンティティを選択できます。

API サーバーユーザーを承認

作成するOData サービスを決定したら、[Settings]->[Users]をクリックしてユーザーを承認します。API サーバーは、認証トークンベースの認証を使用して主要な認証スキームをサポートします。IP アドレスに基づいてアクセスを制限することもできます。ローカルマシンを除くすべてのIP アドレスはデフォルトで制限されています。SSL を使用して、接続を認証及び暗号化することができます。

Node.js からXML OData フィードを消費

OData フィードはNode.js で簡単に使用できます。Node.js のHTTP クライアントを使用して、API サーバーのOData エンドポイントからJSON 形式のデータをリクエストできます。リクエストを行った後、レスポンスの本文を作成し、JSON.parse() 関数を呼び出してレコードに解析できます。

以下のコードはpeople データに対して認証されたリクエストを行います。 以下のURL の例では、[ ] カラムの値がRoberts のレコードを検索する単純なフィルターを適用しています。

var http = require('http'); http.get({ protocol: "http:", hostname:"", port:MyPort, path: "/api.rsc/people?$filter=" + encodeURIComponent("[ ] 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); });