最近のアクセス:
GeneXus Server REST API の拡張

GeneXus Server REST API を使用すると、サーバー自身とサーバーで管理されているナレッジベースの両方に対してクエリを実行できます。ただし、サービスが提供されていないタイプのクエリは、クライアント側で作成する必要があります。
このドキュメントでは、ユーザーが必要とするクエリを実行するための REST サービスを提供する、GeneXus Server のエクステンションの開発方法を説明します。

作成

エクステンションを作成するには、サービスに組み込むロジックを備えた DLL (クラスライブラリ) を作成する必要があります。この場合、同じライブラリにサービスのインターフェース (コントラクト) とその実装の両方が含まれることになります。

コントラクト

作成したプロジェクトにインターフェースを追加し、サービスで公開するメソッドを追加します。インターフェースを提供するためには、System.ServiceModelServiceContract 項目属性で「修飾」する必要があります。サービスで提供するすべてのメソッドに、同様に System.ServiceModel の OperationContract 項目属性と System.ServiceModel.WebWebGet 項目属性が必要です。WebGet 項目属性は、 [ UriTemplate ] プロパティを解決する URL 形式である必要があります (詳しくは https://docs.microsoft.com/en-us/dotnet/api/system.servicemodel.web.webgetattribute.uritemplate を参照)。

サービス

コントラクトを定義したら、次はサービス実装を作成します。そのためには、前述のインターフェース (コントラクト) を実装するクラスをライブラリに追加します。 

公開

このサービスを GXserver で公開するには、エントリーポイント (エンドポイント) を作成する必要があります。そのためには、拡張子 .svc のファイルを作成し、次の行を追加します。
<%@ ServiceHost Language="C#" Service="MyLib.MyService" Factory="GeneXus.Server.Services.Factories.RESTfullFactory" %>
上の行は、Service 項目属性が、サービスを実装するクラスの完全な名前 (名前空間を含む) を含むように変更する必要があります。Factory 項目属性はそのまま使用します。

デプロイメント

サービスの実装が終了したら、2 つの工程から成るデプロイメントを実行します。まず、作成した .svc ファイルを GXserver のルート実行ディレクトリー (<GXserver>\Vdir) にコピーし、サービスでコンパイルした DLL を GXserver の Bin ディレクトリー (<GXserver>\VDir\Bin) にコピーします。
デプロイメントが終了したら、公開されたメソッドの URL をブラウザーから呼び出すことでテストできます (GET メソッドが定義されているため)。この URL は、.svc ファイルの名前、およびコントラクト定義の [ UriTemplate ] プロパティに設定されている文字列に応じて異なります。
たとえば、http://myserver/GenexusServer/TestService.svc/SayHello(World) は、エンドポイントファイル名が TestService.svc で、メソッドコントラクトが次のように定義されているサービスを呼び出します:
 [ WebGet(UriTemplate = "SayHello({name})") ] 
 [ OperationContract ] 
string SayHello(string name);
2 つのアプローチを含むサンプルエクステンションをここからダウンロードできます。
適切な GeneXus SDK を参照するように、Visual Studio のプロジェクト参照を修正してください。

参考情報

GeneXus Server REST サービス
 


サブページ
Created: 14/09/18 03:09 by Admin Last update: 20/12/25 00:25 by Admin
カテゴリ
Powered by GXwiki 3.0