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类型
ResponseEntity 包含了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

你可能感兴趣的:(java)