Spring集成或Apache HTTP客户端

joh*_*nny 12 apache integration spring client http

我有一个spring应用程序,它需要为某些数据调用基于REST的外部API调用.

API的数据格式是JSON.

我的问题是,以下哪个选项更好,重量更轻,可以进行外部api调用

  1. Spring集成(使用ws:outbound-gateway)

  2. Apache Commons HttpClient

请分享你的想法......

Ada*_*ent 15

正如其他人提到的那样,Spring RestTemplateJersey 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);
Run Code Online (Sandbox Code Playgroud)

关键是如果你正在考虑使用Commons HTTP Client,那么@Skaffman说RestTemplate对于更复杂的事情是一个明智的选择!


ska*_*man 9

Spring附带了一个名为RestTemplate(javadoc)的类,它可以使这类事情变得简单.它隐藏了HTTP处理并提供了REST样式的操作界面.它包括对用于转换到JSON和从JSON转换的消息转换器的支持(在这种情况下,Spring支持Jackson库).

Spring Integration对此非常过分 - REST本质上很简单.Commons HttpClient可以工作,但除此之外还有额外的工作要做.

请参阅Spring文档中有关如何使用的部分RestTemplate以及JSON消息转换.


小智 3

我用过 Spring & Jersey。Jersey 通过使用像@GET&&与 JAX-RS 库捆绑这样的注释@POST,可以轻松地使用 Spring 构建 RESTful Web 服务@PUT @DELETE