From 30bb4cd0f918222c6426f875155c6f666de25f92 Mon Sep 17 00:00:00 2001 From: zhh Date: Tue, 18 Sep 2018 16:59:12 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9B=86=E6=88=90restTemplate?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 +- .../mall/demo/config/RestTemplateConfig.java | 17 +++ .../RestTemplateDemoController.java | 109 ++++++++++++++++++ .../src/main/resources/application.properties | 10 +- 4 files changed, 139 insertions(+), 3 deletions(-) create mode 100644 mall-demo/src/main/java/com/macro/mall/demo/config/RestTemplateConfig.java create mode 100644 mall-demo/src/main/java/com/macro/mall/demo/controller/RestTemplateDemoController.java diff --git a/README.md b/README.md index 6aa41ef..62bca6c 100644 --- a/README.md +++ b/README.md @@ -59,9 +59,11 @@ SpringTask定时任务支持 | ✔ docker容器化部署 | ✔ 配置区分生产和测试环境 | ✔ ELK日志收集功能 | ✔ -RestTemplate服务间调用 | -RabbitMq异步通信 | +RabbitMq异步通信 | ✔ +RestTemplate服务间调用 | ✔ SpringSecurity权限管理功能 | +集成SpringCloud | +集成SpringCloudSecurity | ### 使用工具 diff --git a/mall-demo/src/main/java/com/macro/mall/demo/config/RestTemplateConfig.java b/mall-demo/src/main/java/com/macro/mall/demo/config/RestTemplateConfig.java new file mode 100644 index 0000000..cbc4ba5 --- /dev/null +++ b/mall-demo/src/main/java/com/macro/mall/demo/config/RestTemplateConfig.java @@ -0,0 +1,17 @@ +package com.macro.mall.demo.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.client.RestTemplate; + +/** + * RestTemplate的配置 + * Created by macro on 2018/9/18. + */ +@Configuration +public class RestTemplateConfig { + @Bean + public RestTemplate restTemplate(){ + return new RestTemplate(); + } +} diff --git a/mall-demo/src/main/java/com/macro/mall/demo/controller/RestTemplateDemoController.java b/mall-demo/src/main/java/com/macro/mall/demo/controller/RestTemplateDemoController.java new file mode 100644 index 0000000..80e73b3 --- /dev/null +++ b/mall-demo/src/main/java/com/macro/mall/demo/controller/RestTemplateDemoController.java @@ -0,0 +1,109 @@ +package com.macro.mall.demo.controller; + +import com.macro.mall.demo.dto.CommonResult; +import com.macro.mall.model.PmsBrand; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.client.RestTemplate; +import org.springframework.web.util.UriComponents; +import org.springframework.web.util.UriComponentsBuilder; + +import java.util.HashMap; +import java.util.Map; + +/** + * RestTemplate示例Controller + * Created by macro on 2018/9/17. + */ +@Api(value = "RestTemplateDemoController", description = "RestTemplate示例") +@Controller +@RequestMapping("/template") +public class RestTemplateDemoController { + @Autowired + private RestTemplate restTemplate; + @Value("${host.mall.admin}") + private String HOST_MALL_ADMIN; + + @ApiOperation("getForEntity url") + @RequestMapping(value = "/get/{id}", method = RequestMethod.GET) + @ResponseBody + public Object getForEntity(@PathVariable Long id) { + String url = HOST_MALL_ADMIN + "/brand/{id}"; + ResponseEntity responseEntity = restTemplate.getForEntity(url, CommonResult.class, id); + return responseEntity.getBody(); + } + + @ApiOperation("getForEntity params") + @RequestMapping(value = "/get2/{id}", method = RequestMethod.GET) + @ResponseBody + public Object getForEntity2(@PathVariable Long id) { + String url = HOST_MALL_ADMIN + "/brand/{id}"; + Map params = new HashMap<>(); + params.put("id", String.valueOf(id)); + ResponseEntity responseEntity = restTemplate.getForEntity(url, CommonResult.class, params); + return responseEntity.getBody(); + } + + @ApiOperation("getForEntity Uri") + @RequestMapping(value = "/get3/{id}", method = RequestMethod.GET) + @ResponseBody + public Object getForEntity3(@PathVariable Long id) { + String url = HOST_MALL_ADMIN + "/brand/{id}"; + UriComponents uriComponents = UriComponentsBuilder.fromUriString(url).build().expand(id).encode(); + ResponseEntity responseEntity = restTemplate.getForEntity(uriComponents.toUri(), CommonResult.class); + return responseEntity.getBody(); + } + + @ApiOperation("getForObject url") + @RequestMapping(value = "/get4/{id}", method = RequestMethod.GET) + @ResponseBody + public Object getForObject(@PathVariable Long id) { + String url = HOST_MALL_ADMIN + "/brand/{id}"; + CommonResult commonResult = restTemplate.getForObject(url, CommonResult.class, id); + return commonResult; + } + + @ApiOperation("postForEntity jsonBody") + @RequestMapping(value = "/post", method = RequestMethod.POST) + @ResponseBody + public Object postForEntity(@RequestBody PmsBrand brand) { + String url = HOST_MALL_ADMIN + "/brand/create"; + ResponseEntity responseEntity = restTemplate.postForEntity(url, brand, CommonResult.class); + return responseEntity.getBody(); + } + + @ApiOperation("postForEntity jsonBody") + @RequestMapping(value = "/post2", method = RequestMethod.POST) + @ResponseBody + public Object postForObject(@RequestBody PmsBrand brand) { + String url = HOST_MALL_ADMIN + "/brand/create"; + CommonResult commonResult = restTemplate.postForObject(url, brand, CommonResult.class); + return commonResult; + } + + @ApiOperation("postForEntity form") + @RequestMapping(value = "/post3", method = RequestMethod.POST) + @ResponseBody + public Object postForEntity3(@RequestParam String name) { + String url = HOST_MALL_ADMIN + "/productAttribute/category/create"; + //设置头信息 + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + //构造表单参数 + MultiValueMap params= new LinkedMultiValueMap<>(); + params.add("name", name); + HttpEntity> requestEntity = new HttpEntity<>(params, headers); + ResponseEntity responseEntity = restTemplate.postForEntity(url, requestEntity, CommonResult.class); + return responseEntity.getBody(); + } +} diff --git a/mall-demo/src/main/resources/application.properties b/mall-demo/src/main/resources/application.properties index ef8fa52..8f632ed 100644 --- a/mall-demo/src/main/resources/application.properties +++ b/mall-demo/src/main/resources/application.properties @@ -1,3 +1,7 @@ +#===server start=== +server.port=8082 +#===server end=== + #ݿӳ spring.datasource.url=jdbc:mysql://localhost:3306/mall spring.datasource.username=root @@ -21,4 +25,8 @@ spring.thymeleaf.encoding=UTF-8 spring.thymeleaf.content-type=text/html #ʱرջ,Ȼûʵʱҳ spring.thymeleaf.cache=false -#thymeleaf end \ No newline at end of file +#thymeleaf end + +#host start +host.mall.admin=http://localhost:8080 +#host end \ No newline at end of file