RestTemplate的应用
RestTemplate 反对所有 Restful 格调办法,你能够依据须要进行抉择,这里咱们只介绍一些罕用的办法。所有办法都反对URI 模板和URI参数,反对上面这种写法:
相似 spring mvc 中的 @PathVariable
restTemplate提供了如下API:
getForObject --- optionsForAllow 分为一组,这类办法是惯例的 Rest API(GET、POST、DELETE 等)办法调用;
exchange:接管一个 RequestEntity 参数,能够本人设置 HTTP method,URL,headers 和 body,返回 ResponseEntity;
execute:通过 callback 接口,能够对申请和返回做更加全面的自定义管制。
getForObject的应用
restTemplate.getForObject(要拜访的URL, 用于承受后果的类型.class, 入参)
入参能够应用Map的模式,也能够以可变参数的模式,定义:
可变参数:
String result = template.getForObject( "url/{count}/{page}", String.class, "5", "1"); //restTemplate会对参数进行URI编码
getForEntity 的应用
此办法有3个重载 办法参数同getForObject。
惟一区别是:
返回值是ResponseEntity<T>类型
ResponseEntity<T> 蕴含了HTTP响应的头信息header
通过header能够获取到响应的头信息,比方status 状态码, ContentType 响应类型等等
body则是响应数据通过HttpMessageConverter转换的数据.
postForObject 的应用
此办法有3个重载与 getForObject相比多了一个Object request参数。其余参数作用和getForObject雷同
Object request能够应用以下值作为参数:
org.springframework.util.MultiValueMap
通过MultiValueMap携带多个参数
在大多数状况下,您不用为每个部件指定Content-Type。内容类型是依据HttpMessageConverter所选内容类型主动确定的,不指定Content-Type以便基于文件扩展名的状况下进行主动抉择。
postForEntity的应用
此办法有3个重载 办法参数同postForObject 惟一区别是返回值是ResponseEntity类型 ResponseEntity 蕴含了HTTP响应的头信息header
exchange的应用
该办法是通用的申请形式,反对 GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE,当下面的形式不能满足你可采纳该形式定制,该形式提供了更加灵便的 API,比方你能够定制 GET 办法的申请头,放入 Jwt Token等操作,这是getForObject 无法比拟的。
例子:
应用exchange 发动GET申请
设置申请头header:
设置user-agent
设置接收数据类型为JSON