RestTemplate与Apache Http Client,用于Spring项目中的生产代码

bra*_*orm 32 spring resttemplate apache-httpclient-4.x spring-boot

我们有一个即将投入生产的Spring项目.目前,该项目正在使用Apache Http Client.有一种使用RestTemplateas 的想法HttpClient.

我正在四处寻找使用RestTemplate结束的任何明显优势Apache's.此外,了解RestTemplate在其实现中的HTTP传输是很有趣的.Apache Http Client已被多个团体使用多年,并且享有良好的声誉.

我们有冒险搬到RestTemplate哪儿?

此外,该博客指出需要为生产配置RestTemplate,尽管配置很少.

谢谢

JB *_*zet 59

RestTemplate和HttpClient不在相同的抽象级别上运行.

HttpClient是一个使用HTTP进行通信的通用库,而RestTemplate是一个更高级的抽象,处理实体的JSON/XML转换等.

RestTemplate 委托给ClientHttpRequestFactory,该接口的一个实现使用Apache的HttpClient.

因此,如果目标是与Restful API进行通信,并且您仍然希望使用HttpClient,则可以使用RestTemplate而不是HttpClient.

请注意,我刚才所说的正是您链接的博客解释的内容:

因此,解决方案是使用org.springframework.http.client.HttpComponentsClientHttpRequestFactory,这是一个ClientHttpRequestFactory,将请求的创建委托给HttpClient.

  • @user2441441 把它想象成那些带有精美手柄的园艺工具,你可以将实际的工具头从耙子换成锄头或其他东西。RestTemplate 是一个很好用的精美手柄。它恰好安装了一个头部,但您可以用其他东西更换头部。在本例中,头部是 HttpClient,您可以单独使用它,但它有点笨重,使用抽象是一个很好的做法。 (7认同)
  • 但有什么区别呢?他们似乎提供相同的功能 (2认同)