2011-12-18 11 views
4

私はサーバーとクライアントにRESTeasyを使用しました。クライアントの共有サーバーとのサービス・インターフェース:このサービスのRESTeasyクライアントでパスパラメータを設定する方法

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

実装がパス/apiにバインドされているので、この方法のスタートは()の完全なパス/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

に興味を持って、今私は(正規表現での)サーバー用とクライアント用の2つの別々のインタフェースを使用する人のために(プレーン小文字でパス)。私はRESTeasyバグトラッカーの機能強化として報告します。https://issues.jboss.org/browse/RESTEASY-634 – mschayna

+0

アップデート:私はJersey RESTサーバーに一年以上前に切り替えました。ジャージーは完全に別の方法でクライアントをサポートしているので、別の問題に直面する必要があります:) – mschayna

答えて

0

あなたがここにCase-insensitive URLs with JAX-RSを答えを見ることができない:いいえあり、このも添付RFCをこのルール

+0

これは少し古いですが、すでに回答を読んでいます(実際にはその質問に私の答えを追加しました)。しかし、答えは:) – mschayna

関連する問題