Spring的RestTemplata使用详解(2)

  @Override public void put(String url, Object request, Object... urlVariables) throws RestClientException { RequestCallback requestCallback = httpEntityCallback(request); execute(url, HttpMethod.PUT, requestCallback, null, urlVariables); }

这个方法有个小的缺点就是没有请求结果的返回值,如果需要用到返回值,就不能用这个方法。

如果要使用delete类型的请求,RestTemplate的put方法的参数列中只有下面几种

@Override public void delete(String url, Object... urlVariables) throws RestClientException {   execute(url, HttpMethod.DELETE, null, null, urlVariables); } @Override public void delete(String url, Map<String, ?> urlVariables) throws RestClientException {   execute(url, HttpMethod.DELETE, null, null, urlVariables); } @Override public void delete(URI url) throws RestClientException {   execute(url, HttpMethod.DELETE, null, null); }

这些方法并没有给我们参数让我们放请求体内容,所以如果要直接使用RestTemplate提供的Delete方法,接口必须使用restful风格,将参数放在地址中,通过@PathVariable(value="")注解将参数获取到。

重点:其实我们可以直接使用RestTemplate的exchange方法,如

@Override public <T> ResponseEntity<T> exchange(String url, HttpMethod method,   HttpEntity<?> requestEntity, Class<T> responseType, Object... uriVariables) throws RestClientException {   RequestCallback requestCallback = httpEntityCallback(requestEntity, responseType);   ResponseExtractor<ResponseEntity<T>> responseExtractor = responseEntityExtractor(responseType);   return execute(url, method, requestCallback, responseExtractor, uriVariables); }

这里只列举了一个方法,其他的可以看源码,这个方法可以进行所有类型的请求。

在这个方法中,method参数可以通过HTTPMethod枚举来进行获取,requestEntity参数是自己封装的HttpEntity实体,包含请求体和请求头,responseType参数是返回结果的映射类,uriVariables这个参数给我的印象就是鸡肋(个人看法),获取请求返回接口可以通过方法返回值的getBody()方法获取。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/c4e57ec7187e3e0dde35ef10287e2405.html