因此,我正在使用CXF-RS代理功能来创建可重复使用的REST客户端,该客户端将在多个应用程序中使用。所以我有一个类似这样的界面:
@Path("/hello")
public interface HelloService {
@GET
@Path("sayHello")
String sayHello(@QueryParam("name") String name);
}
我正在使用
创建客户端JAXRSClientFactory.create(address, HelloService.class, Collections.singletonList(JacksonJsonProvider.class), true)
但是现在我需要根据应用程序的配置向请求发送附加的查询参数。我不想更改接口HelloService,而是使用某种过滤器来处理此问题。我看到了ClientRequestFilter
,但是我不知道它是否是正确的工具以及如何将其添加到代理中(我看到的所有教程都使用ClientBuilder.newClient()
而不是代理)。
谢谢。
答案 0 :(得分:1)
当然可以为此使用ClientRequestFilter
。假设您要添加查询参数。你可以做类似的事情
public class MyClientFilter implements ClientRequestFilter {
@Override
public void filter(ClientRequestContext request) throws IOException {
request.setUri(UriBuilder.fromUri(request.getUri())
.queryParam("foo", "bar")
.build());
}
}
要注册它,只需将其添加到传递的列表中,作为JAXRSClientFactory.create
的第三个参数。查看JAXRSClientFactory
的文档。您可以看到接受了提供程序列表的重载create
方法。 ClientRequestFilter
是一种提供程序。