我有一個春天的應用程序,需要調用一些數據基於REST的外部API調用。春季集成或Apache HTTP客戶端
來自API的數據格式是JSON。
我的問題是以下哪個選項之一是更好,重量輕,使外部API調用
Spring集成(使用WS:出站網關)
的Apache Commons的HttpClient
請分享你的想法...
我有一個春天的應用程序,需要調用一些數據基於REST的外部API調用。春季集成或Apache HTTP客戶端
來自API的數據格式是JSON。
我的問題是以下哪個選項之一是更好,重量輕,使外部API調用
Spring集成(使用WS:出站網關)
的Apache Commons的HttpClient
請分享你的想法...
我已使用彈簧& Jersey。 Jersey通過使用註釋類似@GET
& @POST
& @PUT
@DELETE
與JAX-RS庫捆綁,可以輕鬆地構建RESTful Web服務。
我的所有API請求都很簡單獲取帶有JSON數據的請求。我的初衷是使用Apache HTTP客戶端來進行API調用並使用jackson來解析JSON響應。我開始閱讀關於Spring集成,並想知道,如果任何一個是使用Spring的集成爲了這個目的...... – johnny
您可以通過做與Jersy以下的JSON做簡單的GET請求: '字符串BASE_URI =「HTTP :// localhost:8080/HelloWorldWebapp/resources「;' 'Client client = Client.create();' 'WebResource webResource = client。資源(BASE_URI);' 'String jsonData = webResource.path(「foo /」)。accept(「application/json」)。get(String.class);' – KnownSubset
春天帶有一個叫做RestTemplate
(javadoc)的類,它應該使這種事情變得簡單。它隱藏了HTTP處理並提供了一個REST風格的操作界面。它包括支持從JSON轉換到JSON的消息轉換器(在這種情況下,Spring支持Jackson庫)。
Spring整合對於這個來說是巨大的矯枉過正 - REST本質上很簡單。 Commons HttpClient會工作,但留給你額外的工作要做。如何使用RestTemplate
以及JSON消息轉換。
正如其他人已經提到春季RestTemplate和澤西休息客戶端將完成這項工作。我用過兩種。他們與傑克遜和IIRC一起工作很好,他們會自動使用它,如果發現(肯定是春天)。
我喜歡Spring RestTemplate的一個優點是可以插入Commons HTTP作爲傳輸。所以,如果你有一些奇怪的標題,cookies,超時,線程,你可以配置Commons HTTP,然後把它放到RestTemplate中。
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJacksonHttpMessageConverter());
restTemplate.setErrorHandler(new DefaultResponseErrorHandler());
CommonsClientHttpRequestFactory f = new CommonsClientHttpRequestFactory();
f.setReadTimeout(120 * 1000);
的一點是,如果你想使用共享HTTP客戶端然後根據@Skaffman說RestTemplate是一個沒有腦子了更復雜的東西!
聽起來不錯。那麼,在Spring Rest Template中,我可以實現以下功能嗎? 1)對http://xyz.com進行HTTP調用2)獲取json響應3)解析json對java對象的響應 – johnny
是的,如果你插入MessageConverter,它甚至會自動爲你做。看到它的javadoc。 –
我在之前的示例代碼中使用了錯誤的消息轉換器(jaxb),現在使用jackson。 –
請參閱http://stackoverflow.com/questions/221442/rest-clients-for-java –