Spring Интеграция или HTTP-клиент Apache
У меня есть приложение spring, которое требует вызова внешних API API REST для некоторых данных.
Формат данных из API - это JSON.
Мой вопрос в том, какой из следующих вариантов лучше и легкий вес для внешних вызовов api
Поделитесь своими мыслями...
Ответы
Ответ 1
Как уже упоминалось, обе работы выполняются как Spring RestTemplate, так и Джерси-клиент для отдыха. Я использовал оба. Оба они отлично работают с Jackson и IIRC, они автоматически будут использовать его, если нашли (spring наверняка).
Есть одно преимущество, которое мне нравится в 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 Client, то, как @Skaffman говорит, что RestTemplate не имеет ничего общего с чем-то более сложным!
Ответ 2
Spring поставляется с классом RestTemplate
(javadoc), который должен сделать это проще. Он скрывает обработку HTTP и предоставляет интерфейс операций типа REST. Он включает поддержку конвертеров сообщений для преобразования в JSON и из него (в этом случае Spring имеет поддержку библиотеки Jackson).
Spring Интеграция огромна для этого - REST по своей сути прост. Commons HttpClient будет работать, но у вас будет дополнительная работа над этим.
Смотрите раздел Spring docs о том, как использовать RestTemplate
, и преобразование сообщения JSON.
Ответ 3
Я использовал Spring и Jersey. Джерси упрощает создание веб-служб RESTful с помощью Spring с помощью аннотаций типа @GET
& @POST
и @PUT
@DELETE
с библиотекой JAX-RS.