HTTP Trigger as JSON REST API
~DataSpiderをREST APIサーバーとして使用する
今回は、DataSpiderのHTTPトリガーを、JSON形式のデータを扱うREST APIとして使用するパターン「HTTP Trigger as JSON REST API」を紹介します。
DataSpider Servista 3.2にてHTTPトリガーはJSONデータ対応を行い、JSON REST APIとして呼び出しを行うことができるようになりました。これにより、DataSpiderのスクリプトをJSON REST API呼び出しで実行することができ、さまざまな用途に役立てることができます。
1 課題
近年のクラウド・サービスはREST APIを用意することが一般的となってきている。特に近年ますます進化が進んでいるJavascirptとの親和性が高いこともあり、データフォーマットとしてはJSONを採用するのが標準的である。
このJSON REST APIの普及に伴い、JSON REST APIを持たないような基幹システムやアプリケーション、データストアなどに対して、クライアントサイドのRESTクライアントからAPI呼び出しを行いたいというニーズが高まってきている。そのような場合は手組でREST APIサーバーを構築することが必要になるが、それは以下のような課題がある。
●自前でアプリケーション・サーバーを立てる必要があり、導入コストが高い
●さまざまなシステム、アプリケーション、データストアに対する呼び出し処理を独自に実装する必要があり、連携システムの知識が求められる
●取得したデータからJSONデータを作成する必要があり、JSONの知識が必要
●REST APIのメソッド追加など、API仕様変更になった場合の改修も手組で行わなければならずメンテナンスコストが高い
2 解決方法
DataSpiderのHTTPトリガーを使用してJSON REST APIを作成する。システムとの連携はHTTPトリガーから呼び出されるスクリプトで処理を作成する。スクリプト内部ではXML型データとしてリクエスト・レスポンスのJSONデータを処理する。
3 説明
DataSpiderのHTTPトリガーはDataSpider Servista 3.2以降、JSON形式のデータをサポートしている。
JSONデータはスクリプト内ではXML型のデータとして処理を行い、リクエストとして受け取ったJSONデータをXML型のスクリプト入力変数として受け取って処理したり、また処理したデータをXML型にスクリプト出力変数として渡せばJSONデータをレスポンスで返すことが可能だ。
これを利用することで、HTTPトリガーをJSON REST APIとして使用し、DataSpiderの多彩なデータ処理機能を活用した独自のREST APIサーバーを構築することができる。
▲実行イメージ。RESTクライアントからは通常のJSON REST APIのように呼び出しが行われ、スクリプトを実行してJSONデータのやり取りができる
このパターンを使って、例えば以下のようなAPIを作るシナリオが考えられる。
●RDBに格納されたデータを特定のキーで取得、またはデータを挿入するAPI
●基幹システムのデータアクセスを可能にするAPI
●複数のアプリケーションやExcelファイルなどに跨がったデータをマージしてクライアントに返すAPI
●SOAP APIのみを持っているアプリケーションに対して、JSON REST APIを提供するAPI
4 メリット
●DataSpider自身がアプリケーション・サーバーとなるため、自前でアプリケーション・サーバーを立てたりプログラム開発する必要がなく、導入が容易
●DataSpiderの豊富なアダプタ機能を活用して、簡単な設定でさまざまなシステムに対してデータアクセスするAPIを構築することができる
●スクリプト内では特にデータ形式を意識する必要がないため、容易にJSONデータを扱うことができる。また、データフォーマットをXMLにするなどの変更も設定だけで可能
●JSONのデータ構造変更やAPIメソッドの追加なども、スクリプトの修正・HTTPトリガー設定で迅速に対応可能。メンテナンスしやすいAPIサーバーを構築できる
5 注意点
●HTTPトリガーでJSON形式のデータに対応するには、HTTPリクエストのContent-Typeが「application/json」である必要がある。また、レスポンスでJSONデータを出力するにはHTTPトリガーの [レスポンス設定]中、 [Content-Type]で [application/json]を選択する。
▲「HTTPトリガーの設定」画面。 [レスポンス設定]- [Content-Type]で[application-json]を選択する。
また、「実行内容の設定」画面で [スクリプト引数]のXML型の変数の値に「${trigger.inputData}」(入力データ)を設定することでリクエストで送信されたJSONデータを受け取ることができ、また [スクリプト出力]のXML型の変数の値に「${trigger.outputData}」(出力データ)を選択することでスクリプトで作成したデータをJSONデータとして返すことができるようになる。
▲HTTPトリガーの「実行内容の設定」画面。 [スクリプト引数]と [スクリプト出力]の値に入出力データを設定し、スクリプトでJSONデータの入出力ができるようにしている
●スクリプトの入出力ではJSONとXMLのデータ変換が行われるが、その際に一定の規則がある。特にスクリプト出力変数のXML型のデータをJSONとして返す場合、この形式に沿っていないとJSON形式のデータに変換されないので注意が必要である。
(※) JSON形式のデータ変換の規則について、詳細は以下のDataSpider Servista 3.2のヘルプを参照してください。
DataSpider Servista 3.2ヘルプ 「HTTPトリガー JSON形式のデータ変換について」
http://dataspider.appresso.com/documents/dss32/help/ja/trigger/http_trigger.html#about_json_convert
●DataSpider Servista 3.2以上でしか使用できない
6 関連事項
特に無し。