RestTemplate的post和get请求 都可以直接接收返回值。
但是put与delete方法为void,无法接收返回值,无法满足业务需求。
若想接收返回值 使用restTemplate.exchange方法
以下代码均为完整示例,可直接复用。
post与get请求示例demo:
post:
public void createTagDimensions(Dimension dimension) throws DimensionCreateFailException {
String accessToken = oauthApplication.getAccessToken();
if(StringUtils.isNotBlank(accessToken)){
Map<String,String> paramters = new HashMap<>();
paramters.put("access_token",accessToken);
//此处为post请求
ResponseEntity<Dimension> entity = restTemplate.postForEntity(CREATE_TAGDIMENSIONS,dimension,Dimension.class,paramters);
Dimension result = entity.getBody();
if(result != null){
System.out.println("result:"+result);
}else {
log.error("result is null");
}
}
log.error("get access_token error");
throw new DimensionCreateFailException();
}
get:
public void getTagDimensions(int max){
String accessToken = oauthApplication.getAccessToken();
if(StringUtils.isNotBlank(accessToken)){
Map<String,String> paramters = new HashMap<>();
paramters.put("access_token",accessToken);
paramters.put("max",String.valueOf(max));
//此处为get请求
ResponseEntity<List> entity = restTemplate.getForEntity(GET_TAGDIMENSIONS,List.class,paramters);
List<Dimension> result = entity.getBody();
if(result != null){
System.out.println("result:"+result);
}else {
log.error("result is null");
}
}
}
正常情况下的put与delete:
若想接收返回值 使用restTemplate.exchange方法
示例方法如下:
put:
public void updateTags(String id,Tag tag){
String accessToken = oauthApplication.getAccessToken();
if(StringUtils.isNotBlank(accessToken)){
Map<String,String> paramters = new HashMap<>();
paramters.put("id",id);
paramters.put("access_token",accessToken);
// 请求头
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
// 发送请求
HttpEntity<Tag> entity = new HttpEntity<>(tag, headers);
// put请求
ResponseEntity<Tag> resultEntity = restTemplate.exchange(UPDATE_TAGS, HttpMethod.PUT, entity,Tag.class, paramters);
Tag result = resultEntity.getBody();
if(result != null){
System.out.println("result:"+result);
}else {
log.error("result is null");
}
}
}
delete:
public void deleteTags(String id){
String accessToken = oauthApplication.getAccessToken();
if(StringUtils.isNotBlank(accessToken)){
Map<String,String> paramters = new HashMap<>();
paramters.put("id",id);
paramters.put("access_token",accessToken);
// delete, entity直接设为null即可
ResponseEntity<Map> resultEntity = restTemplate.exchange(DELETE_TAGS, HttpMethod.DELETE, null,Map.class, paramters);
if(resultEntity != null){
System.out.println("result:"+resultEntity);
}else {
log.error("result is null");
}
}
}
若有其他方法,还望各位留言指教。