微服务中的rpc 请求写法

1、采用restmplate 的postForObject

RestTemplate template = new RestTemplate();
            HttpEntity<List<Map<String, Object>>> request = new HttpEntity<>(paramList, this.getHeaders());
            Map map = template.postForObject(url, request, Map.class);

 url: 对外发送请求的url地址

request:请求的参数,带请求头。比如这里是参数类型是一个 List<Map<String, Object>>

map.class : 请求返回值的类型 这里返回值为一个map 

2、如果传入的参数 param是json对象,postForObject 有时候会报错,此处的docVo 为json对象;

同时,返回值 不是简单的map,list类型,而是对象,则此时需要用到另外一个方法ParameterizedTypeReference 来创建一个返回值包装对象

typeRef = new ParameterizedTypeReference<BaseResultVo<PageDataVo<DocBrowseRankVo>>>() {};

3 、调用 restTemplate.exchange(requestUrl, HttpMethod.POST, request, typeRef);
HttpEntity<DocVo> request = new HttpEntity<>(docyVo, Common.getHeaders());
        ParameterizedTypeReference<BaseResultVo<PageDataVo<DocBrowseRankVo>> > typeRef = new ParameterizedTypeReference<BaseResultVo<PageDataVo<DocBrowseRankVo>>>() {};
        ResponseEntity<BaseResultVo<PageDataVo<DocBrowseRankVo>>> responseEntity = restTemplate.exchange(requestUrl, HttpMethod.POST, request, typeRef);
        return responseEntity.getBody();

  

原文地址:https://www.cnblogs.com/Andrew520/p/9397649.html