我正在使用Spring Boot开发Rest API,并且必须访问应用程序的端点。我曾经用过RestTemplate。我能够使用2种方法来做到这一点,
RestTemplate
postForEntity() :
postForEntity()
responseEntity = restTemplate.postForEntity(uri, httpEntity, ResponseClass.class);
exchange() :
exchange()
responseEntity = restTemplate.exchange(uri, HttpMethod.POST, httpEntity, ResponseClass.class);
我想知道这两种方法的用法和区别。
我也看到了另一种方法execute()。请阐明一下。如何以及何时使用它。
execute()
这RestTemplate是一个非常通用的对象。
让我们从开始 execute ,因为它是最通用的方法:
execute
execute(String url, HttpMethod method, @Nullable RequestCallback requestCallback, @Nullable ResponseExtractor<T> responseExtractor, Object... uriVariables)
请注意,uriVariables也可以通过Map。
uriVariables
Map
execute 设计用于尽可能多的场景:
RequestCallback
@FunctionalInterface
doWithRequest(ClientHttpRequest request)
ResponseExtractor
将此与 exchange :
exchange
exchange(String url, HttpMethod method, @Nullable HttpEntity<?> requestEntity, Class<T> responseType, Object... uriVariables)
这里有两个主要区别:
HttpEntity
Class
如您所见,这对于日常使用更为方便。
这样的方法 getForEntity , postForEntity 甚至更短,更易于理解:
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在幕后称呼自己- 这只是为了方便。
Object