Добавить параметр запроса во время выполнения при использовании прокси-клиента CXF - PullRequest
0 голосов
/ 11 октября 2018

Поэтому я использую прокси-функцию 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(), а не прокси).

Спасибозаранее.

1 Ответ

0 голосов
/ 12 октября 2018

Конечно, вы можете использовать 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 является своего рода провайдером.

...