2011-12-18 90 views
4

我已經使用服務器和客戶端的RESTeasy。客戶服務股份接口服務器:如何在RESTeasy客戶端中設置路徑參數

public interface Service { 
    @Path("/start") 
    @GET 
    void start(); 
} 

這種服務的實施必然路徑/api,所以方法start()方法是完整路徑/api/start上訪問。在客戶端代碼是非常簡單的:

RegisterBuiltin.register(ResteasyProviderFactory.getInstance()); 
Service service = ProxyFactory.create(Service.class, "http://server/api"); 
service.start(); 

但我想有路不區分大小寫的,所以在它的正則表達式我假路徑參數:

public interface Service { 
    @Path("/{start:[Ss]tart}") 
    @GET 
    void start(); 
} 

現在客戶ProxyFactory裏不知道價值替代路徑參數{start}並且不做任何替換,客戶端以例外You did not supply enough values to fill path parameters結束。

但是,當我嘗試使用路徑參數作爲方法參數,它的工作原理。

public interface Service { 
    @Path("/{start:[Ss]tart}") 
    @GET 
    void start(@PathParam("start") String param); 
} 

如何在RESTeasy客戶端中爲假路徑參數指定值?

謝謝。

+1

對於那些誰感興趣的話,現在我使用兩個單獨的接口,用於服務器(使用正則表達式)和客戶端(與普通小寫路徑)。我將它報告爲RESTeasy bug跟蹤器的增強版,我們將看到,https://issues.jboss.org/browse/RESTEASY-634 – mschayna 2011-12-19 13:44:04

+0

更新:我比一年前更換了Jersey REST服務器。澤西支持客戶端完全以另一種方式,所以我不得不面對另一種問題:) – mschayna 2014-02-05 14:14:56

回答

0

您可以在這裏看到答案Case-insensitive URLs with JAX-RS:沒有沒有,這也附RFC這一規則

+0

這是有點過時,並已閱讀答案(並添加我對這個問題的答案實際上),但最後我可以標記此回答:) – mschayna 2014-02-05 14:11:35