标签:stat 详解 add 注入 creat webapi style hello 相关
详细介绍RestTemplate 针对几种不同请求类型和参数类型的服务调用实现,示例代码中的 restTemplate 都是通过Spring 注入方式创建的,相关代码如下:
@Autowired
private RestTemplate restTemplate;
? ?
在应用主类需要增加 Bean,代码如下:
@LoadBalanced
@Bean
public RestTemplate createRestTemplate(){
????????return new RestTemplate();
}
在 RestTemplate 中,对GET请求可以通过如下方法进行调用:
???????????? ResponseEntity<String> responseEntity = null;
????????????????????????responseEntity =
????????????????????????????????????????restTemplate.getForEntity("http://ORG.DRSOFT.WEBSERVICE.HELLOSERVICE/hello/get, String.class);
????????????????????????if (responseEntity.getStatusCode() == HttpStatus.OK) {
????????????????????????????????return responseEntity.getBody();
????????????????????????}
????????????????????????return "response status " + responseEntity.getStatusCodeValue();
??String body =
??????????????????restTemplate.getForObject("http://ORG.DRSOFT.WEBSERVICE.HELLOSERVICE/hello/get", String.class);
在RestTemplate 中,对 POST 请求可以通过如下三个方法进行调用实现。
????????????User user = new User("didi",30);
????????????ResponseEntity<String> responseEntity =
???????????? restTemplate.postForEntity("http://ORG.DRSOFT.WEBSERVICE.HELLOSERVICE/hello/post",user,String.class);
????????????String body = responseEntity.getBody();
这里需要注意的是新增加的 request 参数,该参数可以是一个普通对象,也可以是一个 HttpEntity 对象,如果是一个普通对象时,RestTemplate 会将请求对象转换为一个 HttpEntity 对象来处理,并且把该对象视为完整的 body 来处理;如果是一个 HttpEntity 对象,那么就会当作一个完整的HTTP 请求对象来处理,这个对象不仅包含了 body 内容,也包含了 header 内容,示例代码如下:
ResponseEntity<String> responseEntity = null;
HttpHeaders headers = new HttpHeaders();
List<MediaType> accept = new LinkedList<>();
accept.add(MediaType.APPLICATION_JSON_UTF8);
headers.setAccept(accept);
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
? ?
MultiValueMap<String, String> postParameters = new LinkedMultiValueMap<>();
postParameters.add("id", "11");
postParameters.add("name", "aoa");
postParameters.add("comment", "");
? ?
HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(postParameters, headers);
? ?
responseEntity =
??????????????restTemplate.postForEntity("http://ORG.DRSOFT.WEBSERVICE.HELLOSERVICE/webapi/hello/post", requestEntity, String.class);
String body = responseEntity.getBody();
? ?
????????????User user = new User("didi",30);
????????????String body =
??????????? ? restTemplate..postForObject("http://ORG.DRSOFT.WEBSERVICE.HELLOSERVICE/hello/post",user,String.class);
????????????User user = new User("didi",30);
????????????URI responseURI =
restTemplate.postForLocation("http://ORG.DRSOFT.WEBSERVICE.HELLOSERVICE/hello/post",user);
在 RestTemplate 中,对与 put 请求其返回为 void 类型,没有返回内容,因此,就没有其他函数定义的 responseType 参数,除此之外的其他传入参数定义与用法与 postForObject 基本一致,示例代码如下:
Map<String, String> map = new HashMap<>();
map.put("put1", "23434");
map.put("put2", "3544545");
???????????????? ?
restTemplate.put("http://ORG.DRSOFT.WEBSERVICE.HELLOSERVICE/webapi/hello/put/{0}/{1}", map, 123213, "桑德兰副科级");
在 RestTemplate 中,对 DELETE 请求可以通过 delete 方法进行调用实现,和put请求一致,其返回类型为 void 类型,因此 DELETE 请求不需要返回数据,示例代码如下:
?Integer id = 100;
?restTemplate.delete("http://ORG.DRSOFT.WEBSERVICE.HELLOSERVICE/hello/delete?id={1}", id);
笔记:Spring Cloud Ribbon RestTemplate 详解
标签:stat 详解 add 注入 creat webapi style hello 相关
原文地址:http://www.cnblogs.com/li3807/p/7469020.html