JAX-RS идеально подходит для реализации REST.Что вы используете для вызова служб REST в Java?[закрыто]

StackOverflow https://stackoverflow.com/questions/923566

  •  06-09-2019
  •  | 
  •  

Вопрос

В идеале, я ищу что-то вроде JAX-RS (используя аннотации для описания служб, которые я хочу вызвать), но позволяющее вызывать службы REST, реализованные с использованием других технологий (не JAX-RS).Есть какие-нибудь предложения?

Это было полезно?

Решение

Вы написали в комментарии, что "надеялись на что-то более высокоуровневое", чем HttpClient.Это звучит как Рестлет было бы идеально.Он предоставляет высокоуровневый API для реализации и используя Веб-приложения RESTful с адаптерами plug-and-play для реализаций более низкого уровня.

Например, чтобы ОПУБЛИКОВАТЬ веб-форму на ресурсе с помощью Restlet 1.1:

Client client = new Client(Protocol.HTTP);

Form form = new Form();
form.add("foo", "bar");
form.add("abc", "123");

Response response = client.post("http://host/path/to/resource", form.getWebRepresentation())

if (response.getStatus().isError()) {
    // deal with the error
    return;
}

if (response.isEntityAvailable()) {
    System.out.println(response.getEntity().getText());
}

Если вам нужно задать дополнительные параметры для запроса, вы можете использовать объект запроса:

Form form = new Form();
form.add("foo", "bar");
form.add("abc", "123");

Request request = new Request(Method.POST, "http://host/path/to/resource");

request.setEntity(form.getWebRepresentation());

request.setReferrerRef("http://host/path/to/referrer");

Response response = client.handle(request);

ХТХ!

Другие советы

JAX-RS (JSR311) не определяет клиентский API, но в большинстве реализаций JAX-RS он есть, например Джерси, Спокойный или Apache CXF.Фреймворк Restlet также имеет служба поддержки клиентов а также отдельный Расширение HTTP-клиента.

Поскольку это специализированные библиотеки / фреймворки для REST, я бы посоветовал вам ознакомиться с ними.

Я предлагаю вам взглянуть на Проект WADL.ВАДЛ - это то, что нужно для ОТДЫХА WSDL это к МЫЛУ.

Сначала вам нужно определить интерфейс REST с помощью WADL.Затем вы можете запустить на нем инструмент wadl2java, чтобы сгенерировать заглушки клиента для остальных вызовов.

Как только у вас есть WADL для веб-сервиса, вы можете реализовать инструменты, которые также выполняют с ним другие действия, напримерсоздавайте заглушки на стороне сервера, создавайте документацию и т.д.

HttpClient от апача в основном (см HTTP: // Нс .apache.org / httpcomponents-клиент-га / ).

Как сказали Гэндальф и Даррел Миллер, HttpClient.

Вам не нужно создавать XML из параметров HTTP.XML должен быть вашим интерфейсом только между двумя отдельными системами.Использование HttpClient переводит вас на Java со строковыми значениями в вашем распоряжении, возвращаться оттуда в XML нет необходимости.

Если на данном этапе вы возвращаетесь к XML для отправки в другую систему, вам следует подумать о перемещении значений из параметров HTTP обратно в логику вашего домена / приложения, прежде чем связываться с другой системой.Это необходимо для обеспечения надлежащего отделения логики приложения от межсистемных коммуникаций.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top