써드파티 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;
다음 내용은 그 외의 위치에서 수행되는 동기 액세스에 대한 예제입니다.
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}"}};