API Server は、データを外部に公開します。CData API Server のOData エンドポイントを使って、Node.js からBusiness b-ridge へのCRUD クエリを実行します。
CData API Server とADO.NET Provider for Business b-ridge(もしくは220+ の他のADO.NET Providers)を使って、Business b-ridge をOData エンドポイントして公開し、Node.js からシンプルなHTTP リクエストでクエリを実現します。本記事ではAPI Server を使ってJSON でフォーマットされたBusiness b-ridge データをNode.js でリクエストする方法を説明します。
API サーバーをセットアップ
以下のステップに従って、安全なBusiness b-ridge OData サービスの作成を開始します。
デプロイ
API サーバーは独自のサーバーで実行されます。Windows では、スタンドアロンサーバーまたはIIS を使用して展開できます。Java サーブレットコンテナで、API Server WAR ファイルをドロップします。詳細とハウツーについては、ヘルプドキュメントを参照してください。
API Server は、Microsoft Azure、Amazon EC2、Heroku にも簡単にデプロイできます。
Business b-ridge に接続
API サーバーとADO.NET Provider for Business b-ridge を展開した後、[Settings]->[Connections]をクリックし、API サーバー管理コンソールで新しい接続を追加してBusiness b-ridge に接続するために必要な認証値とその他の接続プロパティを指定します。
When connecting to Business b-ridge, CompanyKey, ProjectKey, and SubscriptionKey are required.
To obtain the SubscriptionKey, follow the steps below:
- Log in to Business b-ridge API Protal and go to "Profile" in the "Your name" menu.
- In your subscription section click "Main Key" to retrieve their respective values.
Authenticate to Business b-ridge Account
Set the following connection properties to connect:
- CompanyKey: Set the Business b-ridge Company Key of the connection destination.
- ProjectKey: Set the Business b-ridge Project Key of the connection destination.
- SubscriptionKey: Set the value "Subscription Key".
次に、[Settings]->[Resources]をクリックして、API サーバーへのアクセスを許可するBusiness b-ridge エンティティを選択できます。
API サーバーユーザーを承認
作成するOData サービスを決定したら、[Settings]->[Users]をクリックしてユーザーを承認します。API サーバーは、認証トークンベースの認証を使用して主要な認証スキームをサポートします。IP アドレスに基づいてアクセスを制限することもできます。ローカルマシンを除くすべてのIP アドレスはデフォルトで制限されています。SSL を使用して、接続を認証及び暗号化することができます。
Node.js からBusiness b-ridge OData フィードを消費
OData フィードはNode.js で簡単に使用できます。Node.js のHTTP クライアントを使用して、API サーバーのOData エンドポイントからJSON 形式のデータをリクエストできます。リクエストを行った後、レスポンスの本文を作成し、JSON.parse() 関数を呼び出してレコードに解析できます。
以下のコードはCDATA データに対して認証されたリクエストを行います。 以下のURL の例では、ItemTypeId カラムの値が1 のレコードを検索する単純なフィルターを適用しています。
var http = require('http');
http.get({
protocol: "http:",
hostname:"MyServer.com",
port:MyPort,
path: "/api.rsc/CDATA?$filter=" + encodeURIComponent("ItemTypeId eq '1'"),
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);
});