在Spring-Boot开发中,RestTemplate同样提供了对外访问的接口API,这里主要介绍Get和Post方法的使用。Get请求提供了两种方式的接口getForObject 和 getForEntity,getForEntity提供如下三种方法的实现。
Get请求之——getForEntity(Stringurl,Class responseType,Object…urlVariables)
该方法提供了三个参数,其中url为请求的地址,responseType为请求响应body的包装类型,urlVariables为url中的参数绑定,该方法的参考调用如下:
//http://USER-SERVICE/user?name={name)RestTemplaterestTemplate=newRestTemplate();Map<String,String>params=newHashMap<>();params.put("name","dada");//ResponseEntity<String>responseEntity=restTemplate.getForEntity("http://USERSERVICE/user?name={name}",String.class,params);
Get请求之——getForEntity(URI url,Class responseType)
该方法使用URI对象来替代之前的url和urlVariables参数来指定访问地址和参数绑定。URI是JDK http://java.net包下的一个类,表示一个统一资源标识符(Uniform Resource Identifier)引用。参考如下:
RestTemplaterestTemplate=newRestTemplate();UriComponentsuriComponents=UriComponentsBuilder.fromUriString("http://USER-SERVICE/user?name={name}").build().expand("dodo").encode();URIuri=uriComponents.toUri();ResponseEntity<String>responseEntity=restTemplate.getForEntity(uri,String.class).getBody();
Get请求之——getForObject
getForObject方法可以理解为对getForEntity的进一步封装,它通过HttpMessageConverterExtractor对HTTP的请求响应体body内容进行对象转换,实现请求直接返回包装好的对象内容。getForObject方法有如下:
getForObject(Stringurl,ClassresponseType,Object...urlVariables)getForObject(Stringurl,ClassresponseType,MapurlVariables)getForObject(URIurl,ClassresponseType)
Post 请求
Post请求提供有三种方法,postForEntity、postForObject和postForLocation。其中每种方法都存在三种方法,postForEntity方法使用如下:
RestTemplaterestTemplate=newRestTemplate();Useruser=newUser("didi",30);ResponseEntity<String>responseEntity=restTemplate.postForEntity("http://USER-SERVICE/user",user,String.class);//提交的body内容为user对象,请求的返回的body类型为StringStringbody=responseEntity.getBody();
postForEntity存在如下三种方法的重载
postForEntity(Stringurl,Objectrequest,ClassresponseType,Object...uriVariables)postForEntity(Stringurl,Objectrequest,ClassresponseType,MapuriVariables)postForEntity(URIurl,Objectrequest,ClassresponseType)
postForEntity中的其它参数和getForEntity的参数大体相同在此不做介绍。