Spring Rest Template Put方法无效,为什么?

问题描述 投票:0回答:2

我正在使用适用于 Android 的 Spring Rest 模板,并将使用 PUT 方法来更新方法。但令人惊讶的是,PUT 方法通常不支持解析结果对象,它们只是 void,为什么呢?我对正确的 REST 支持的理解是应该返回更新的对象。 Spring 这样做的合理性是什么?

2.5.6 HTTP 放置

public void put(String url, Object request, Object... urlVariables) throws RestClientException;

public void put(String url, Object request, Map<String, ?> urlVariables) throws RestClientException;

public void put(String url, Object request, Map<String, ?> urlVariables) throws RestClientException;

http://docs.spring.io/spring-android/docs/1.0.2.BUILD-SNAPSHOT/reference/html/rest-template.html

android spring rest
2个回答
4
投票

PUT 类似于更新服务器上的现有记录,因此如果您成功更新某些内容,当您将其更改为该状态时,您本质上应该知道新状态。

也就是说,如果您使用 GET 检索文档,那么您就拥有服务器端表示形式。 如果您随后更改该文档的一个或多个属性,然后将这些更改 PUT 到服务器,则不需要告诉您文档已更改为什么,因为您已经拥有更改后的值,假设服务器返回一个成功响应。


-3
投票

抱歉,Spring

RestTemplate
不适合自定义使用,它是根据 REST 规范使用的。

尝试使用

org.apache.http.impl.client.DefaultHttpClient
或通过
new URL("http:...").openConnection()
根据您的需求提出请求。

因为有反对票让我更好地解释一下:

PUT
方法无效,因为 put 方法的 REST 概念只是仅 PUT 数据并期望在正常情况下得到 OK '200' 响应,仅此而已。

出现错误时,服务必须使用一些 HTTP 错误代码进行响应,这也是该方法抛出异常的原因。

© www.soinside.com 2019 - 2024. All rights reserved.