RestTemplate使用
GET资源
getForObject()
该方法接受3个参数:
- URL格式请求链接, 可以是String或URI类型(不同类型,参数列表表达形式不一样)
- 实体类, 和json/xml绑定的实体类对象
- 可变参数列表或Map类型的参数列表
URL格式链接支持占位符
getForEntity()
同getForObject()方法相似,但它不会直接返回绑定后的实体类,而是返回ResponseEntity对象,这个对象附带响应的元数据
如果要获取实体类,需要调用ResponseEntity.getBody()方法
ResponseEntity.getHeaders()方法返回响应的头部
ResponseEntity.getStatusCode()方法返回响应状态码
POST资源
postForObject()
该方法第一个参数都是资源要 POST 到的 URL ,第二个参数是要发送的对象,而第三个参数是预期返回的 Java 类型。
在将URL作为 String 类型的两个版本中,第四个参数指定了 URL 变量(要么是可变参数列表,要么是一个 Map )
postForEntity()
使用方法同getForEntity()类似
postForLocation()
同postForEntity()类似,第一个参数都是资源要 POST 到的 URL ,第二个参数是要发送的对象,但响应不再返回实体类而是返回新建资源的位置
exchange()——在请求中添加请求头部
它的第一参数是URL链接,第二参数是请求方法,第三参数用于在请求中发送资源,第四参数表示响应体绑定的实体类,最后一个参数是URL参数列表
如果要设置请求头信息,只需在第三参数位置传入 HttpEntity 对象, HttpEntity 中包含承载头信息的 MultiValueMap
下面是一个HttpEntity示例:
MultiValueMap<String, String> headers = new LinkedMultiValueMap<String, String>();
headers.add("Accept", "application/json");
HttpEntity<Object> requestEntity = new HttpEntity<Object>(headers);
如果是一个PUT或POST请求,我们需要为HttpEntity设置在请求体中发送的资源对象