2014-03-03 38 views
1

我使用的是Restlet library,我想知道在通過URL訪問時是否可以調用某個類的特定方法。使用Restlet框架調用特定的方法

現在,我有這樣的事情:

public Restlet createInboundRoot() { 
    Router router = new Router(getContext()); 

    router.attach("/monitor", Monitor.class); 
} 

通過URL訪問到/monitor/時呼叫Monitor類。 我希望能夠做這樣的事情:

public Restlet createInboundRoot() { 
    Router router = new Router(getContext());  

    router.attach("/monitor/name", Monitor.getName()); 
    router.attach("/monitor/description", Monitor.getDescription()); 
} 

這可能與Restlet框架? 現在我找到了解決方法是通過使用GET參數,並使用在represent方法條件:

public StringRepresentation represent() { 
    String type= getQuery().getValues("type"); 

    if(type.equals("getName")){ 
     this.getName(); 
    } 
    if(type.equals("getDescription")){ 
     this.getDescription(); 
    }  
} 

但它聽起來並不像做它的方式。

+0

標準的JAX-RS樣式允許通過註釋來進行這種配置.. http://www.techferry.com/articles/RESTful-web-services-JAX-RS-annotations.html。 Restlet似乎具有JAX-RS支持擴展http://restlet.org/learn/guide/2.2/extensions/jax-rs ..結合這兩個URL中的信息可能會指出可能的解決方案? – arajashe

+0

基於基本概念/監視器/名稱和/監視器/描述是資源,所以你應該爲它們使用不同的類。我不建議調用不同的方法,而是建議爲Monitor(/ monitor)使用一個資源並使用如下查詢參數過濾輸出:/ monitor?filter = name和/ monitor?filter = description – bvamos

+0

monitor/name'只會返回一個字符串以及'monitor/description',所以它們不應該是類。它們只是公共方法返回的類的屬性。 – Alvaro

回答

1

您的解決方案是驗證REST準則的最佳方法。
所以,除非您將名稱和描述轉換爲資源,否則就是這樣。

相關問題