微服务中的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();