RestTemplate真实案例
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
RestTemplate真实案例
1. 场景描述
现在越来越的系统之间的交互采⽤http+json的交互⽅式,以前⽤的⽐较多的HttpClient,后来⽤的RestTemplate,感觉RestTemplate要⽐httpClent简洁的多,简单介绍下,项⽬中正在使⽤的get和post调⽤⽅式。
2. 解决⽅案
2.1 简要说明
RestTemplate是集成在spring-web中的,因为springboot的starter已经默认加载进来,所以可以直接使⽤不⽤再配置maven的gav了。
2.2 post调⽤⽅式
2.2.1 真实代码
public static String invoke(String url, HashMap params) throws Exception {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.parseMediaType("application/json; charset=UTF-8"));
headers.add("Accept", MediaType.APPLICATION_JSON.toString());
HttpEntity<String> httpEntity = new HttpEntity<>(JSONObject.toJSONString(params), headers);
RestTemplate rst = new RestTemplate();
ResponseEntity<String> stringResponseEntity = rst.postForEntity(url, httpEntity, String.class);
return stringResponseEntity.getBody();
}
2.2.2 代码说明
invoke是通⽤⽅法调⽤,项⽬中的⼊参是:url和map,url是调⽤地址,写在配置⽂件中;map是外围系统需要的参数,在相关类中进⾏封装后传过来。
2.3 get调⽤⽅式
2.3.1真实代码
public JSONArray getUsers() throws Exception {
JSONArray result = new JSONArray();
try {
RestTemplate restTemplate = new RestTemplate();
result = restTemplate.getForObject(apiUrl + "/user/list?appCode={1}",
JSONArray.class, code);
} catch (Exception e) {
}
return result;
}
2.3.2 代码说明
其中参数是:url和code,根据code去查询对应集合。
2.4 RestTemplate Api说明
DELETE delete
GET getForObject
getForEntity
HEAD headForHeaders
OPTIONS optionsForAllow
POST postForLocation
postForObject
postForEntity
PUT put
any exchange
execute
⼀般只需记住get与post的五个就可以了(getForObject 、getForEntity、postForLocation、postForObjec、postForEntity),这⼏个⽅法有很多重载的⽅法,参数不⼀样,可根据实际情况调⽤。