2013-05-30 3 views
0

Restlet API를 기반으로 웹 애플리케이션을 개발했습니다. 시간이 지남에 따라 더 많은 기능을 추가 할 때마다 동일한 끝점에서 유사한 REST API 그룹을 재사용해야 할 필요가 있습니다. 이는 동일한 스키마로 다른 인스턴스의 데이터베이스를 전환하는 것과 같이 약간 다른 실행 컨텍스트를 제공합니다. API를 재사용 가능하게 만들고 다른 끝점에서 다시 사용할 수 있도록 내 코드를 리팩터링하는 것을 좋아합니다.Restlet의 API 모듈화

router.attach("/context1",APIApplication.class) 
router.attach("/foo/context2",APIApplication.class) 

이 API는 REST API를 구성 불가지론해야한다 : 내 초기 생각은 각 재사용 가능한 API에 대한 응용 프로그램을 설계하고 라우터를 연결하는 것이었다. 컨텍스트 정보 (예 : 데이터베이스 인스턴스)를 Application API에 전달하는 가장 좋은 방법은 무엇입니까? 이 접근법은 실행 가능하고 정확합니까? Restlet에서 REST API를 재사용하는 가장 좋은 방법은 무엇입니까? 일부 코드 샘플은 대답을 설명해 주시면 감사하겠습니다.

도움 주셔서 감사합니다.

답변

0

이 기본 샘플에 따라 라우터가 아닌 VirtualHost에 하위 애플리케이션을 연결하여 Component를 최상위 레벨 객체로 사용하여이 기본 설정 실행을 확인했습니다.

public class Component extends org.restlet.Component 
{ 
    public Component() throws Exception 
    { 
    super(); 
    // Client protocols 
    getClients().add(Protocol.HTTP); 

    // Database connection 
    final DataSource dataSource = InitialContext.doLookup("java:ds"); 
    final Configuration configuration = new Configuration(dataSource); 

    final VirtualHost host = getDefaultHost(); 

    // Portal modules 
    host.attach("/path1", new FirstApplication()); 
    host.attach("/path2", new SecondApplication(configuration)); 
    host.attach("/path3", new ThirdApplication()); 
    host.attachDefault(new DefaultApplication(configuration)); 
    } 
} 

우리는 필요한 공통 구성 정보를 전달하는 데 기본적으로 POJO를 사용자 정의 구성 객체를 사용하고 응용 프로그램을 구성하려면이 옵션을 사용, 우리는 각 응용 프로그램에 대해 별도의 '기본'컨텍스트를 사용했다.

이것은 원래 restlet 1.1.x에 대해 코딩되었으며 2.0.x를 통해 2.1.x로 업그레이드되었으며 제대로 작동하지만 어느 버전 2.1에서도 더 좋은 방법이 될 수 있습니다. x 또는 2.2.x.