2017-03-07 4 views
0

マイRESTEasyのエンドポイントインタフェースは、このように宣言されていますresteasy、@Context UriInfoパラメータをプロキシクライアントコールで使用するために初期化する方法はありますか?

@Path("/entity") 
public interface EntitySearchEndpoint { 
... 
    @GET 
    @Path("/search") 
    @Produces(MediaType.APPLICATION_JSON) 
    public Response search(@Context UriInfo ui); 
... 
} 

は今、私はインターフェイス

ResteasyClient reClient = new ResteasyClientBuilder().build(); 
ResteasyWebTarget webTarget = reClient.target(URI.create("http://example.com")); 
EntitySearchEndpoint entitySearchEndpoint = ncspAPIWebTarget.proxy(EntitySearchEndpoint.class); 

を使用してプロキシクライアントを作成した今、私は

UriInfo ui = ??? 
Response response = entitySearchEndpoint.search(ui); 

私の質問を使用してサービスを呼び出すことができていますUriInfoのインスタンスを作成して、必要なクエリパラメータのみを含む方法は?
パラメータとして@Context UriInfoを使用している可能性がありますが、正しい方法は何ですか?
QueryParam名リストが限定されるものではなく、任意の名前が許可されている...

答えて

0

私はあなたが正しく何をしたい理解している場合、あなたのAPIは、このようなものになります:

@Path("/entity") 
public interface EntitySearchEndpoint { 
... 
    @GET 
    @Path("/search/{searchQuery}") 
    @Produces(MediaType.APPLICATION_JSON) 
    public Response search(@PathParam("searchQuery") String searchQuery); 
... 
} 

をして、あなたのクライアントはそれを呼ぶだろう

+0

ランディさん、ありがとう、私はついにそれを覚えていませんが、私は後でそれを書き込もうとします。ポイントは、検索パラメータがクエリパラメータにあったということです。疑問符「?paam1 = value1&param2 = value2&.....」の後にあることを意味します。 – mirec

+0

これはおそらく@QueryParamを使用していることを示しています。私はUriInfoを使用しません(あなたはそのようなパラメータとして渡すことはありません)あなたのAPIコードを見て誰かが入力を持っていることを認識しないだろう。 QueryParamははるかに明確です。 – Randy

+0

ええ、しかし、パラメータの数はさまざまで、その名前も変わる可能性があります... – mirec

関連する問題