RestTemplate的详细解释和用法(get和post)

RestTemplate 简介

RestTemplate 是从 Spring3.0 开始支持的一个 HTTP 请求工具,它提供了常见的REST请求方案的模版,例如 GET 请求、POST 请求、PUT 请求、DELETE 请求以及一些通用的请求执行方法 exchange 以及 execute。RestTemplate 继承自 InterceptingHttpAccessor 并且实现了 RestOperations 接口,其中 RestOperations 接口定义了基本的 RESTful 操作,这些操作在 RestTemplate 中都得到了实现。接下来我们就来看看这些操作方法的使用。

用法实战

在开始下面的案例之前,我们需要先创建一个工程,命名为 RestTemplate 。和上篇文章的项目结构一样,在 RestTemplate 中,我们也分别创建子项目 eureka 、provider 以及 consumer ,将 provider 和 consumer 分别注册到 eureka 上面去。这个具体的步骤大家可以参考上篇文章,本文我就不赘述了,这是我们的准备工作。

GET 请求

做好了准备工作,先来看使用 RestTemplate 发送 GET 请求。在 RestTemplate 中,和 GET 请求相关的方法有如下几个:

getForEntity

//使用getForEntity来发送请求的信息,返回的对象是ResponseEntity的一个实例,实例包含响应数据和响应头,例如
@RestController
public class HelloController {
   
    @GetMapping("/get")
    public String test(String get) {
   
        return "hello " + get + " !";
    }
}

第一个是占位符不使用数字,而是使用参数的 key,同时将参数放入到一个 map 中。map 中的 key 和占位符的 key 相对应,map 中的 value 就是参数的具体值,例如还是上面的请求,利用 map 来传递参数,请求方式如下:

Map<String, Object> map = new HashMap<>();
String url = "http://" + host + <
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RestTemplate是Spring框架提供的一个用于发送HTTP请求的工具类,它支持GET、POST、PUT、DELETE等HTTP请求方法,并且可以通过设置请求头、请求参数、请求体等来实现不同的HTTP请求。 使用RestTemplate发送GET请求,可以通过以下代码实现: ```java RestTemplate restTemplate = new RestTemplate(); String result = restTemplate.getForObject(url, String.class); ``` 其中,url表示请求的地址,String.class表示返回值的类型,getForObject方法会将返回的JSON/XML等格式的数据自动转换为指定类型的对象。 使用RestTemplate发送POST请求,可以通过以下代码实现: ```java RestTemplate restTemplate = new RestTemplate(); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); JSONObject requestJson = new JSONObject(); requestJson.put("key1", "value1"); requestJson.put("key2", "value2"); HttpEntity<String> entity = new HttpEntity<>(requestJson.toString(), headers); String result = restTemplate.postForObject(url, entity, String.class); ``` 其中,headers表示请求头,requestJson表示请求体,postForObject方法会将请求体中的JSON格式的数据自动转换为指定类型的对象。 RestTemplate还支持异步回调,可以通过以下代码实现: ```java RestTemplate restTemplate = new RestTemplate(); ListenableFuture<ResponseEntity<String>> future = restTemplate.getForEntity(url, String.class); future.addCallback(new ListenableFutureCallback<ResponseEntity<String>>() { @Override public void onSuccess(ResponseEntity<String> result) { System.out.println(result.getBody()); } @Override public void onFailure(Throwable ex) { ex.printStackTrace(); } }); ``` 其中,getForEntity方法返回的是一个ListenableFuture对象,可以通过addCallback方法添加回调函数,在请求完成后执行回调函数。onSuccess方法表示请求成功时执行的回调函数,onFailure方法表示请求失败时执行的回调函数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值