快捷搜索:  汽车  科技

springboot分层及各层作用(JavaSpringBootRestTemplate用法)

springboot分层及各层作用(JavaSpringBootRestTemplate用法)

RestTemplate<org.springframework.web.client.RestTemplate>

从Spring3.0开始支持的一个HTTP请求工具,提供了REST请求方案的模版,GET 请求、POST 请求、PUT请求、DELETE请求以及一些通用的请求执行方法exchange以及execute。

RestTemplate 继承自InterceptingHttpAccessor并且实现了RestOperations接口,其中,RestOperations接口定义了基本的 RESTful 操作,这些操作在RestTemplate中实现。

案例代码:

springboot分层及各层作用(JavaSpringBootRestTemplate用法)(1)

springboot分层及各层作用(JavaSpringBootRestTemplate用法)(2)

import org.springframework.http.ResponseEntity; import org.springframework.web.client.RestTemplate; import org.what21.cloud.entity.User; import java.util.HashMap; import java.util.List; import java.util.Map; public class RestTemplateGetForEntityDemo { public static void getForEntityReturnBean(){ String url = "http://127.0.0.1:9001/user/get/1"; RestTemplate rest = new RestTemplate(); ResponseEntity<User> responseEntity = rest.getForEntity(url User.class); User user = responseEntity.getBody(); System.out.println(user); } public static void getForEntityReturnBean2(){ String url = "http://127.0.0.1:9001/user/get2?id={id}"; RestTemplate rest = new RestTemplate(); Map<String Object> paramMap = new HashMap<String Object>(); paramMap.put("id" 2); ResponseEntity<String> responseEntity = rest.getForEntity(url String.class paramMap); System.out.println(responseEntity.getBody()); } public static void getForEntityReturnList(){ String url = "http://127.0.0.1:9001/user/list"; RestTemplate rest = new RestTemplate(); ResponseEntity<List> responseEntity = rest.getForEntity(url List.class); List<Map> dataList = responseEntity.getBody(); System.out.println(dataList); for(Map map : dataList){ System.out.println(map.get("id") " " map.get("username") " " map.get("realName")); } } public static void main(String[] args) { getForEntityReturnBean(); getForEntityReturnBean2(); getForEntityReturnList(); } }

import org.springframework.web.client.RestTemplate; import org.what21.cloud.entity.User; import java.util.HashMap; import java.util.List; import java.util.Map; public class RestTemplateGetForObjectDemo { public static void getForObjectReturnBean(){ String url = "http://127.0.0.1:9001/user/get/1"; RestTemplate rest = new RestTemplate(); User user = rest.getForObject(url User.class); System.out.println(user); } public static void getForObjectReturnBean2(){ String url = "http://127.0.0.1:9001/user/get2?id={id}"; RestTemplate rest = new RestTemplate(); Map<String Object> paramMap = new HashMap<String Object>(); paramMap.put("id" 2); String json = rest.getForObject(url String.class paramMap); System.out.println(json); } public static void getForObjectReturnList(){ String url = "http://127.0.0.1:9001/user/list"; RestTemplate rest = new RestTemplate(); List<Map> dataList = rest.getForObject(url List.class); System.out.println(dataList); for(Map map : dataList){ System.out.println(map.get("id") " " map.get("username") " " map.get("realName")); } } public static void main(String[] args) { getForObjectReturnBean(); getForObjectReturnBean2(); getForObjectReturnList(); } }

import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.apache.http.client.HttpClient; import org.apache.http.client.config.RequestConfig; import org.apache.http.impl.client.DefaultHttpRequestRetryHandler; import org.apache.http.impl.client.HttpClientBuilder; import org.springframework.http.*; import org.springframework.http.client.*; import org.springframework.web.client.RestTemplate; import org.what21.cloud.entity.User; import java.io.IOException; import java.util.*; @Slf4j public class RestTemplateExchangeDemo { static class RestTemplateConsumerLogger implements ClientHttpRequestInterceptor { @Override public ClientHttpResponse intercept(HttpRequest httpRequest byte[] bytes ClientHttpRequestExecution clientHttpRequestExecution) throws IOException { // 传递header参数 HttpHeaders headers = httpRequest.getHeaders(); headers.add("header_name" "header_value"); headers.add("header_token" "token_value"); return clientHttpRequestExecution.execute(httpRequest bytes); } } public static RestTemplate restTemplate() { //生成一个设置了连接超时时间、请求超时时间、异常重试次数3次 RequestConfig config = RequestConfig.custom().setConnectionRequestTimeout(10000).setConnectTimeout(10000).setSocketTimeout(30000).build(); HttpClientBuilder builder = HttpClientBuilder.create().setDefaultRequestConfig(config).setRetryHandler(new DefaultHttpRequestRetryHandler(3 false)); HttpClient httpClient = builder.build(); ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpClient); RestTemplate restTemplate = new RestTemplate(requestFactory); restTemplate.setInterceptors(Collections.singletonList(new RestTemplateConsumerLogger())); return restTemplate; } public static User getUser(RestTemplate restTemplate String remoteUrl Integer id) { //设置Http的Header HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); //设置访问参数 HashMap<String Object> params = new HashMap<>(); params.put("id" id); //设置访问的Entity HttpEntity entity = new HttpEntity<>(params headers); ResponseEntity<String> result = null; try { //发起一个POST请求 result = restTemplate.exchange(remoteUrl HttpMethod.POST entity String.class); User user = JSONObject.parseObject(result.getBody() User.class); return user; } catch (Exception e) { e.printStackTrace(); log.error("调用错误:" e.getMessage()); } return null; } public static void main(String[] args) { RestTemplate restTemplate = restTemplate(); User user = getUser(restTemplate "http://127.0.0.1:9001/user/get3" 3); System.out.println(user); } }

import com.alibaba.fastjson.JSON; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.web.bind.annotation.*; import org.what21.cloud.entity.User; import org.what21.cloud.entity.param.UserGetParam; import org.what21.cloud.service.IUserService; import javax.servlet.http.HttpServletRequest; import java.util.List; @RestController @RequestMapping("/user") public class UserController { @Autowired @Qualifier("userService") IUserService userService; @RequestMapping(path = "/list" method = {RequestMethod.GET}) public String list() { List<User> userList = userService.listUsers(); return JSON.toJSONString(userList); } @RequestMapping(path = "/get/{id}" method = {RequestMethod.GET RequestMethod.POST}) public String get(@PathVariable("id") Integer id) { User user = userService.getUser(id); return JSON.toJSONString(user); } @RequestMapping(path = "/get2" method = {RequestMethod.GET RequestMethod.POST}) public String get2(@RequestParam("id") Integer id) { User user = userService.getUser(id); return JSON.toJSONString(user); } @RequestMapping(path = "/get3" method = {RequestMethod.GET RequestMethod.POST}) public String get3(HttpServletRequest request @RequestBody UserGetParam userGetParam) { System.out.println("header_token = " request.getHeader("header_token")); System.out.println("header_name = " request.getHeader("header_name")); User user = userService.getUser(userGetParam.getId()); return JSON.toJSONString(user); } }

猜您喜欢: