乐趣区

关于java:RestTemplate使用

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

退出移动版