这是一个非常通用的对象。RestTemplate
让我们从执行
开始,因为它是最通用的方法:
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(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