サード・パーティーの 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);
同期アクセスと非同期アクセス間の差は以下のとおりです。
  • 置換値として使用される複数の引数は受け渡しされません。 URI を構成する別の方法を次に示します。
    • URI 全体を受け渡すことができます (例に示しています)
    • 変数宣言に URI 全体を指定することもできます。次に例を示します。
      myVar IRest {@RESTService {baseURI="http://www.example.com"};
      myResource String = ServiceLib.convertToJSON(myRec);
      call myVar.invokePost("", myResource) 
          returning to myCallbackfunction; 
    • 変数宣言を使用して、基本 URI を指定してから相対 URI を受け渡すことができます。
  • POST、PUT、または DELETE メソッドを使用してサービスを呼び出すときには、表現 (文字列) のフォーマットが、REST サービスが必要とするフォーマットであることを確認してください。必要なフォーマットを表示する関数を以下に示します。
    • JSON 変換: serviceLib.convertToJSON
    • XML 変換: XMLLib.convertToXML
特性の異なる関数プロトタイプ (表現を受け渡す必要がない DELETE 操作など) が必要となることがあります。 この場合は類似のインターフェース・パーツを作成します。ただし、InvokeDelete 関数プロトタイプを変更するか、または別の名前でプロトタイプを追加します。変更されたプロトタイプを、次に示します。
function invokeDelete(reqURL string in) returns(string) 
   {@deleteRest {uriTemplate="{reqURL}"}};