サード・パーティーの 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}"}};