【详解】使用RestTemplate快捷访问restful接口,以postForObject()为例

1.RestTemplate是什么?作用是什么?

        在微服务中都是以HTTP接口的形式暴露自身服务的,因此在调用远程服务时就必须使用HTTP客户端。比如Spring提供的RestTemplate。RestTemplate是Spring提供的用于访问Rest服务的客户端,提供了多种便捷访问远程Http服务的方法,RestTemplate的核心之一 Http Client。RestTemplate 可支持多种 Http Client的对http的访问。

        在微服务架构中,不可能每一个服务都去访问数据库,服务和服务之间相互调用是非常常见的,调用服务提供者的服务(restful接口)。

作用:简单的说,RestTemplate简化了发起HTTP请求以及处理响应的过程,并且支持REST。

就是,服务和服务之间的调用可以通过RestTemplate模板进行快速调用,里面的功能都封装好了。直接使用就可以了。传入参数就可以。

2.RestTemplate的使用

先创建一个restTemplate的配置,其中的方法返回一个RestTemplate的对象。

@Bean
public RestTemplate restTemplate() {
  return new RestTemplate();
}

下面主要是restTemplate中的方法:

delete() :在特定的URL上对资源执行HTTP DELETE操作

exchange():
在URL上执行特定的HTTP方法,返回包含对象的ResponseEntity,这个对象是从响应体中
映射得到的

execute() :在URL上执行特定的HTTP方法,返回一个从响应体映射得到的对象

getForEntity(): 发送一个HTTP GET请求,返回的ResponseEntity包含了响应体所映射成的对象

getForObject() :发送一个HTTP GET请求,返回的请求体将映射为一个对象

postForEntity():
POST 数据到一个URL,返回包含一个对象的ResponseEntity,这个对象是从响应体中映射得
到的

postForObject() :POST 数据到一个URL,返回根据响应体匹配形成的对象

headForHeaders(): 发送HTTP HEAD请求,返回包含特定资源URL的HTTP头

optionsForAllow() :发送HTTP OPTIONS请求,返回对特定URL的Allow头信息

postForLocation() :POST 数据到一个URL,返回新创建资源的URL

put() :PUT 资源到特定的URL

下面以postForObject()方法为例:

postForObject((String url,
                           @Nullable Object request,
                           Class<T> responseType)

参数一url:要调用服务的地址

参数二request:表示要上传的参数

参数三responseType:返回的消息体的数据类型

简单就是: 请求地址、请求参数、HTTP响应转换被转换成的对象类型。

public class OrderController {
    public static final String PAYMENT_URL = "http://localhpst:8001";
    @Autowired
    private RestTemplate restTemplate;

    // 消费者,读操作用get,写操作用post
    public CommonResult<Payment> create(Payment payment){
        return restTemplate.postForObject(PAYMENT_URL + "/payment/create", payment, CommonResult.class);
    }
}

猜你喜欢

转载自blog.csdn.net/Sunshineoe/article/details/121121545