2011-11-22 52 views
0

考慮以下ServerResource派生類型:是否有可能在Restlet中強類型化HTTP請求處理程序?

public class UserResource extends ServerResource { 
    @Get 
    public User getUser(int id) { 
    return new User(id, "Mark", "Kharitonov"); 
    } 
} 

(是的,它總是返回相同的用戶,無論給定的ID)。

它有可能使它在Restlet中工作嗎?因爲,據我瞭解,在GET處理的預期的簽名是:

Representation get(); 

OR

Representation get(Variant v); // (no idea what it means yet) 

現在我明白了,我可以實現非類型安全的GET處理提取參數從請求中調用getUser,之後從結果中構造出相應的Representation實例並返回。但是這是一個樣板代碼,它不屬於應用程序代碼,它的位置在框架內。至少,這是如何通過OpenRasta完成的 - 我一直在.NET中使用的REST框架。

謝謝。

回答

0

你應該從簽名

@Get 
    public User getUser() { 
    String id = getQuery().getFirstValue("id"); 
    return new User(id, "Mark", "Kharitonov"); 
    } 

刪除參數無需爲@Get註釋會自動檢測覆蓋的get()在這種情況下的方法。

+0

OK,所以GET http:// bla-bla-bla/user/2被路由到'getUser',如果我們假設POST http:// bla-bla-bla/user被路由到'newUser',那麼'getUser'和'newUser'不能在同一個'ServerResource'中,否則GET http:// bla-bla-bla/user也會被路由到'getUser'!看起來,儘管GET和POST提到了相同的資源('User'),它們必須由不同的「ServerResource」實例處理。這有點令人失望...... – mark

相關問題