在工程实践中,可能经常会遇到一个项目中的服务组件需要调用另一个项目中的服务组件,除了使用dubbo接口之外,还可以使用rest调用的形式直接调用其他非本工程的接口,其使用方式如下:
{
@Value("${service.host}")
String hosts;
// 方法
@Value("${service.method}")
String createresource;
org.springframework.web.client.RestTemplate restTemplate = new org.springframework.web.client.RestTemplate();
Integer id = Integer.parseInt(request.getId());
ModelDTO modelDTO = new ModelDTO();
modelDTO.setType(request.getType());
modelDTO.setId(id);
modelDTO.setTitle(Util.toString(request.getTitle()));
HttpHeaders jsonHeaders = new HttpHeaders();
jsonHeaders.setContentType(MediaType.APPLICATION_JSON);
jsonHeaders.add("Accept", "application/json;charset=UTF-8");
String resourceJson = JSON.toJSONString(modelDTO);
HttpEntity<String> resourceEntity = new HttpEntity<String>(resourceJson, jsonHeaders);
// rest调用的ip+端口+方法等
String requestUrl = hosts + method;
// 请求
ResponseEntity<String> responseEntity = restTemplate.exchange(requestUrl , HttpMethod.POST, resourceEntity, String.class);
JSONObject resultObject = JSOrN.parseObject(responseEntity.getBody());
String result = resultObject.getString("code");
// 如果接口调用成功
if ("0".equals(result)) {
// 其他逻辑
……
} else {
// 其他逻辑或者保护措施
}
}
}