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」ページ(クリックで拡大)

サーバーの作成は以上です。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30