RAD開発の応用 - RESTを使ってつながるシステムに拡張する
RESTサーバーを作成する
それでは、実際にDelphiを使って、RESTサーバーを作成してみましょう。[ファイル|新規作成]から[その他]を選択します。「新規作成」ダイアログの[Delphiプロジェクト|DataSnap Server]カテゴリから「DataSnap RESTアプリケーション」を選択します。[OK]ボタンをクリックすると、「DataSnap RESTアプリケーションの新規作成」ダイアログが表示されます。
図1:DataSnap RESTアプリケーションの新規作成 |
このウィザードを用いれば、ウィンドウを持つスタンドアロンの、VCLアプリケーションのRESTサーバー、あるいはスタンドアロンコンソールアプリケーション、または、IISで利用できる、ISAPIダイナミックリンクライブラリのRESTサーバーのいずれかを作成できます。ここでは、「スタンドアロンVCLアプリケーション」を選択しましょう。
次に使用するポート番号を指定します。ポート番号を入力したら、[ポートのテスト]ボタンをクリックして、そのポートを利用できるかどうかテストすることができます。
図2:ポートのテスト |
次に、サーバーメソッドクラスの上位クラスを指定します。上位クラスには、TComponent、TDataModule、TDSServerModuleを指定できます。これらのコンポーネントクラスを継承することで、サーバーメソッドクラスもコンポーネントとしてビジュアルに扱うことができるのです。ここでは、シンプルなTComponentを選択します。
最後にプロジェクトの保存場所を指定して、[完了]ボタンをクリックすると、RESTサーバーアプリケーション(この場合は、GUIを持つWindowsアプリケーション)が作成されます。
図3:作成されたRESTサーバーアプリケーション(クリックで拡大) |
このプロジェクトには、3つのユニットがあります。Unit1は、GUI部分、すなわちフォームです。ServerMethodsUnit1は、RESTサーバーのリモートメソッドが定義されています。ここでは、サンプルとして、引数に与えた文字列をそのまま返すEchoStringと、文字列を反転させるReverseStringの、2つのメソッドが定義されています。
Unit ServerMethodsUnit1; interface uses SysUtils, Classes, DSServer; type {$METHODINFO ON} TServerMethods1 = class(TComponent) private { private 宣言 } public { public 宣言 } function EchoString(Value: string): string; function ReverseString(Value: string): string; end; {$METHODINFO OFF} implementation uses StrUtils; function TServerMethods1.EchoString(Value: string): string; begin Result := Value; end; function TServerMethods1.ReverseString(Value: string): string; begin Result := StrUtils.ReverseString(Value); end; end.
最後のユニットUnit2は、サーバーとなるWebModuleです。Delphiでは、RESTサーバーを構築するために必要が機能も、コンポーネントとして提供されています。ウィザードは、必要なコンポーネントを配置し、あらかじめ設定を行っています。もちろん、ウィザードが生成したこのWebモジュールを、必要に応じてカスタマイズしていくこともできます。その際には、オブジェクトインスペクタを使って、プロパティやイベントを設定する、通常のビジュアル開発の手順を用います。
図4:RESTサーバーとなるWebモジュール(クリックで拡大) |
今回は、ウィザードが生成したサンプルメソッドをそのまま使います。もちろん、独自のメソッドを定義したい場合には、ServerMethodsUnit1に追加します。
RESTサーバーの実行
[実行]ボタンをクリックすると、プロジェクトがコンパイルされ、サーバーを制御するウィンドウが表示されます。
図5:RESTサーバーの実行(クリックで拡大) |
[開始ボタン]をクリックして、サーバーを起動します。[ブラウザを開く]ボタンをクリックして、リモートメソッドにアクセスするページを表示します。
図6:ブラウザで表示(クリックで拡大) |
[ReverseString]ボタンをクリックすると、リモートメソッドのReverseStringが呼び出され、テキストボックスに入力された文字列を反転させます。
図7:文字列の反転(クリックで拡大) |
このページにある「Server Functions」というリンクをクリックすると、すべてのリモートメソッド呼び出しに関する情報が表示されます。
図8:「Server Function Invoker」ページ(クリックで拡大) |
サーバーの作成は以上です。