Schnittstellenabschnitt für Zugriff auf REST-Service eines anderen Herstellers
In EGL können Sie mit dem folgenden Schnittstellenabschnitt auf den REST-Service eines anderen Herstellers zugreifen.
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
Wenn Sie diesen Schnittstellenabschnitt unverändert übernehmen, müssen Sie keinen neuen schreiben. Die erforderlichen Schritte zur Codierung der Serviceaufrufanweisung sind jedoch anders.
Im Folgenden ist ein Beispiel für einen asynchronen Zugriff aufgeführt, der in Rich-UI-Anwendungen
vorkommen kann:
myVar IRest;
myResource String = ServiceLib.convertToJson(myRec);
call myVar.invokePost("http://www.example.com", myResource)
returning to myCallbackfunction;
Im Folgenden ist ein Beispiel für einen synchronen Zugriff aufgeführt, der anderswo auftreten kann:
myString STRING:
myVar IRest;
myResource String = ServiceLib.convertToJson(myRec);
myString = myVar.invokePost("http://www.example.com", myResource);
Unterschiede zwischen dem synchronen und asynchronen Zugriff:
- Es werden nicht mehrere Argumente zur Verwendung als Substitutionswerte
übergeben. Es gibt verschiedene Möglichkeiten zur Erstellung des URI:
- Der gesamte URI kann übergeben werden (siehe Beispiele).
- Der gesamte URI kann außerdem in der Variablendeklaration angegeben
werden (siehe folgendes Beispiel):
myVar IRest {@RESTService {baseURI="http://www.example.com"}; myResource String = ServiceLib.convertToJSON(myRec); call myVar.invokePost("", myResource) returning to myCallbackfunction; - Die Variablendeklaration stellt in jedem Fall den Basis-URI bereit und gibt dann einen relativen URI weiter.
- Beim Aufruf eines Service mit den Methoden POST, PUT oder DELETE müssen Sie sicherstellen, dass die
Darstellung (eine Zeichenfolge) in dem Format erfolgt, das für den REST-Service erforderlich ist. Die folgenden
Funktionen geben die erforderlichen Formate an:
- Für JSON-Konvertierung: serviceLib.convertToJSON
- Für XML-Konvertierung: XMLLib.convertToXML
Sie benötigen möglicherweise einen Funktionsprototyp, der über ein anderes Merkmal verfügt,
wie beispielsweise eine DELETE-Operation, die keine Übergabe einer Darstellung erforderlich macht.
In diesem Fall erstellen Sie einen vergleichbaren Schnittstellenabschnitt, ändern aber den Funktionsprototyp
InvokeDelete oder fügen einen Prototyp mit einem anderen Namen hinzu. Beispiel für einen geänderten
Prototyp:
function invokeDelete(reqURL string in) returns(string)
{@deleteRest {uriTemplate="{reqURL}"}};