Spring3应用程序的Rest客户端实现

Spring3应用程序的Rest客户端实现,spring,rest,http-headers,httpclient,rest-client,Spring,Rest,Http Headers,Httpclient,Rest Client,我需要为我的一个spring 3 web应用程序编写java API。我应该能够通过这些API完成使用web UI执行的所有操作。我有用@RequestMapping修饰的控制器方法。我最近听说,这些方法可以公开为Restful服务,可以通过rest客户端进行访问,只需很少的修改。我只是想知道为spring3服务创建Rest客户端的推荐方法。我不想在这些JavaAPI中使用任何spring依赖项。我应该能够使用这些API上传文件,因为我在spring应用程序中实现了多部分/表单数据。有人能帮我选

我需要为我的一个spring 3 web应用程序编写java API。我应该能够通过这些API完成使用web UI执行的所有操作。我有用@RequestMapping修饰的控制器方法。我最近听说,这些方法可以公开为Restful服务,可以通过rest客户端进行访问,只需很少的修改。我只是想知道为spring3服务创建Rest客户端的推荐方法。我不想在这些JavaAPI中使用任何spring依赖项。我应该能够使用这些API上传文件,因为我在spring应用程序中实现了多部分/表单数据。有人能帮我选择用java为spring应用程序开发RESTClient的最佳方法吗

我有以下HTTP实现:

Java—使用JVM提供的HTTP实现。与HttpClient实现相比,这有一些限制

HTTPClient3.1-使用Apache Commons HttpClient 3.1

HTTPClient4-使用ApacheHttpComponents HttpClient 4.x


请告诉我您的建议。

我个人使用org.springframework.web.client.RestClient,因为您已经在使用Spring了。他们在管理你需要的东西方面做得很好,只需记住他们的例外情况,没有内容处理糟糕透顶。我唯一需要做的修改是覆盖他们的
doExecute(URI、HttpMethod、RequestCallback、ResponseExtractor)
并添加:

if (response.getStatusCode().equals(HttpStatus.NO_CONTENT)) {
    return null;
}
以前

if (!getErrorHandler().hasError(response)) { ...

除了这个小怪癖(以及一些自定义异常处理),它是一个很棒的工具。

我个人使用org.springframework.web.client.RestClient,因为您已经在使用Spring了。他们在管理你需要的东西方面做得很好,只需记住他们的例外情况,没有内容处理糟糕透顶。我唯一需要做的修改是覆盖他们的
doExecute(URI、HttpMethod、RequestCallback、ResponseExtractor)
并添加:

if (response.getStatusCode().equals(HttpStatus.NO_CONTENT)) {
    return null;
}
以前

if (!getErrorHandler().hasError(response)) { ...

除了这个小怪癖(以及一些自定义异常处理),它还是一个很棒的工具。

非常感谢您提供的详细信息。我想知道RestTemplate是否支持多部分文件上传。我需要随HTTPRequest Yupy一起发送文件,您也可以在这里查看:我还有一个问题:我需要在rest调用时执行操作。哪个HTTP动词适合执行操作?根据REST规范:要在服务器上创建资源,请使用POST。要检索资源,请使用GET。要更改或更新资源的状态,请使用PUT。若要删除或删除资源,请使用“删除”。但我需要执行特定于应用程序的操作。我只是想知道特定于应用程序的操作是否违反REST原则。换句话说,如果我需要执行一个特定的操作,比如,处理一个上传的文件并将其转换成不同的格式并发送到远程位置,我应该使用REST吗?我可能没有在REST的正确上下文中发言。我需要做的就是“我应该为我的服务器创建JavaAPI,用户应该能够像通过WEBUI一样执行操作”,非常感谢您提供的详细信息。我想知道RestTemplate是否支持多部分文件上传。我需要随HTTPRequest Yupy一起发送文件,您也可以在这里查看:我还有一个问题:我需要在rest调用时执行操作。哪个HTTP动词适合执行操作?根据REST规范:要在服务器上创建资源,请使用POST。要检索资源,请使用GET。要更改或更新资源的状态,请使用PUT。若要删除或删除资源,请使用“删除”。但我需要执行特定于应用程序的操作。我只是想知道特定于应用程序的操作是否违反REST原则。换句话说,如果我需要执行一个特定的操作,比如,处理一个上传的文件并将其转换成不同的格式并发送到远程位置,我应该使用REST吗?我可能没有在REST的正确上下文中发言。我需要做的就是“我应该为我的服务器创建java API,用户应该能够像通过WEBUI一样执行操作”