Spring Integration или Apache HTTP-клиент - PullRequest
12 голосов
/ 27 июля 2011

У меня есть приложение Spring, которое требует вызывать внешние вызовы API на основе REST для некоторых данных.

Формат данных из API - JSON.

У меня вопрос: какой из следующих вариантов лучше и легче для внешних вызовов API? 1005 *

  1. Интеграция Spring (с использованием ws: outbound-gateway)

  2. Apache Commons HttpClient

Пожалуйста, поделитесь своими мыслями ...

Ответы [ 3 ]

15 голосов
/ 28 июля 2011

Как уже упоминалось, Spring RestTemplate и Jersey Rest Client выполнят эту работу. Я использовал оба. Оба они отлично работают с Джексоном и IIRC, они автоматически используют его, если найдут (весна наверняка).

Есть одно преимущество, которое мне нравится в Spring RestTemplate, это то, что вы можете добавить Commons HTTP в качестве транспорта. Так что, если у вас были какие-то странные заголовки, файлы cookie, время ожидания, потоки, вы можете настроить Commons HTTP и затем поместить его в RestTemplate.

RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJacksonHttpMessageConverter());
restTemplate.setErrorHandler(new DefaultResponseErrorHandler());
CommonsClientHttpRequestFactory f = new CommonsClientHttpRequestFactory();
f.setReadTimeout(120 * 1000);

Дело в том, что если вы подумываете об использовании клиента Commons HTTP, тогда как @Skaffman говорит, что RestTemplate не представляет никакой сложности для чего-то более сложного!

9 голосов
/ 28 июля 2011

Spring поставляется с классом RestTemplate ( javadoc ), который должен облегчить подобные вещи.Он скрывает обработку HTTP и предоставляет интерфейс операций в стиле REST.Он включает поддержку конвертеров сообщений для преобразования в и из JSON (в данном случае Spring поддерживает библиотеку Джексона).

Spring Integration для этого является огромным излишним - REST по своей сути прост.Commons HttpClient работал бы, но оставлял вам дополнительную работу для этого.

См. раздел документов Spring о том, как использовать RestTemplate и преобразование сообщений JSON.

3 голосов
/ 28 июля 2011

Я использовал Spring & Jersey .Jersey упрощает создание веб-сервисов RESTful с помощью Spring с помощью аннотаций, таких как @GET & @POST & @PUT @DELETE, с библиотекой JAX-RS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...