resteasy,如何初始化@Context UriInfo参数用于代理客户端调用?

时间:2017-03-07 14:58:44

标签: java-ee jax-rs resteasy

我的resteasy端点接口声明如下:

@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名称列表不受限制,允许任何名称......

1 个答案:

答案 0 :(得分:0)

如果我理解你想要什么,你的API可能看起来像这样:

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

并且您的客户只需使用字符串调用它:

Response response = entitySearchEndpoint.search("test string");