サード・パーティーの REST サービスにアクセスするためのインターフェース・パーツ

EGL では、以下に示すインターフェース・パーツを使用してサード・パーティー REST サービスにアクセスできます。

interface IRest
   function invokeGet(reqURL string in) returns(string)  
      {@getRest {uriTemplate="{reqURL}"}};
   function invokePost(reqURL string in, representation string in) returns(string)
      {@postRest {uriTemplate="{reqURL}"}};
   function invokePut(reqURL string in, representation string in) returns(string)
      {@putRest {uriTemplate="{reqURL}"}};
   function invokeDelete(reqURL string in, representation string in) returns(string) 
      {@deleteRest {uriTemplate="{reqURL}"}};
end

このインターフェース・パーツをそのままの状態で使用すると、インターフェース・パーツを作成する必要がなくなります。しかし、サービス呼び出し文のコーディングに必要な作業は異なります。

Rich UI アプリケーション内で発生する非同期アクセスの例を以下に示します。
myVar IRest;
myResource String = ServiceLib.convertToJson(myRec);
call myVar.invokePost("http://www.example.com", myResource) 
    returning to myCallbackfunction;
Rich UI アプリケーション外部で発生する同期アクセスの例を以下に示します。
myString STRING:
myVar IRest;
myResource String = ServiceLib.convertToJson(myRec);
myString = myVar.invokePost("http://www.example.com", myResource);
同期アクセスと非同期アクセス間の差は以下のとおりです。
特性の異なる関数プロトタイプ (表現を受け渡す必要がない DELETE 操作など) が必要となることがあります。 この場合は類似のインターフェース・パーツを作成します。ただし、InvokeDelete 関数プロトタイプを変更するか、または別の名前でプロトタイプを追加します。変更されたプロトタイプを、次に示します。
function invokeDelete(reqURL string in) returns(string) 
   {@deleteRest {uriTemplate="{reqURL}"}};

フィードバック