这
RestTemplate是一个非常通用的对象。
让我们从开始 execute
,因为它是最通用的方法:
execute(String url, HttpMethod method, @Nullable RequestCallback requestCallback, @Nullable ResponseExtractor<T> responseExtractor, Object... uriVariables)
请注意,
uriVariables也可以通过
Map。
execute设计用于尽可能多的场景:
- 第一个和第二个参数允许URL和方法的任何有效组合。
- 可以通过在发送请求之前传递自定义
RequestCallback
(@FunctionalInterface
仅使用一种方法doWithRequest(ClientHttpRequest request)
)来以多种不同方式修改请求。 - 可以通过传递自定义以任何必要的方式反序列化从远程资源返回的响应
ResponseExtractor
。
将此与 exchange
:
exchange(String url, HttpMethod method, @Nullable HttpEntity<?> requestEntity, Class<T> responseType, Object... uriVariables)
这里有两个主要区别:
- 您现在可以
HttpEntity
直接传递,而之前需要使用手动设置RequestCallback
。 - 通过传递所需的响应类型,即可提供反序列化机制
Class
。
如您所见,这对于日常使用更为方便。
这样的方法 getForEntity
, postForEntity
甚至更短,更易于理解:
getForEntity(String url, Class<T> responseType, Object... uriVariables)postForEntity(String url, @Nullable Object request, Class<T> responseType, Object... uriVariables)
postForEntity现在,通知使您
Object无需包装即可直接发布任何内容。使用它们来代替
execute它们并不会带来性能上的好处或损害,因为它们
execute在幕后称呼自己-
这只是为了方便。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)