说明:本文章只是快速入手,底层实现可以查看源码!同时只以Post请求为例
工程一目录:
工程二目录:
1.在使用RestTemplate之前先把它交给Spring管理(当然,你也可以比交给Spring管理 直接new该对象)
/** * @author 李庆伟 * @date 2020/7/19 16:37 */ @Configuration public class RestConfig { @Bean public RestTemplate getRestTemplate(){ return new RestTemplate(); } }
2.一服务中代码
package com.dev.controlller; import com.dev.model.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.ResponseEntity; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; import java.util.Map; /** * @author 李庆伟 * @date 2020/7/19 16:40 */ @RestController @RequestMapping("testRest") public class TestRestController { @Autowired private RestTemplate restTemplate; private static final String PRO_7001_URL = "http://localhost:7001"; @GetMapping("testOne") //可以设置方法传参 和 在请求头中设置参数 public Map<String,Object> getPostForObjectMonth(){ // 封装参数,千万不要替换为Map与HashMap,否则参数无法传递 MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap<String, Object>(); paramMap.add("pageNo",1); paramMap.add("pageSize",1); HttpHeaders headers = new HttpHeaders(); headers.add("ID_Test","hello_testOne_getPostForObjectMonth"); //headers.add();在请求头中设置传递信息 HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<MultiValueMap<String, Object>>(paramMap,headers); Map<String,Object> map = restTemplate.postForObject(PRO_7001_URL+"/user/findUserByPage",httpEntity,Map.class); return map; } @GetMapping("testTwo") //可以设置方法传参 public User getPostForEntityMonthOne(){ // 封装参数,千万不要替换为Map与HashMap,否则参数无法传递 MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap<String, Object>(); paramMap.add("id",1); ResponseEntity<User> user = restTemplate.postForEntity(PRO_7001_URL+"/user/getUserById",paramMap,User.class); return user.getBody(); } @GetMapping("testThr") //可以设置方法传参 public User getPostForEntityMonthTwo(){ // 封装参数,千万不要替换为Map与HashMap,否则参数无法传递 MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap<String, Object>(); paramMap.add("id",1); HttpHeaders headers = new HttpHeaders(); headers.add("ID_Test","hello_testThr_getPostForEntityMonthTwo"); //headers.add();在请求头中设置传递信息 HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<MultiValueMap<String, Object>>(paramMap,headers); ResponseEntity<User> user = restTemplate.postForEntity(PRO_7001_URL+"/user/getUserById",httpEntity,User.class); return user.getBody(); } }
3.二服务中的代码
package com.dev.controller; import com.dev.model.User; import com.dev.service.UserService; import com.github.pagehelper.PageInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; import java.util.HashMap; import java.util.Map; /** * @author 李庆伟 * @date 2020/7/18 19:46 */ @RestController @RequestMapping("user") public class UserController { @Autowired private UserService userService; /** * 分页查询 * [pageNo, pageSize] * @return {@link Map< String, Object>} * @throws * @author 李庆伟 * @date 2020/7/19 18:07 */ @PostMapping("findUserByPage") public Map<String, Object> findUserByPage(Integer pageNo, Integer pageSize, HttpServletRequest request){ String herderId = request.getHeader("ID_Test");//测试是否传递请求头 System.out.println(herderId); Map<String,Object> map = new HashMap<String,Object>(); PageInfo<User> pageInfo = userService.findUserByPage(pageNo,pageSize); map.put("pageInfo",pageInfo); return map; } /** * 根据id查找用户 * [id] * @return {@link User} * @throws * @author 李庆伟 * @date 2020/7/19 18:08 */ @PostMapping("getUserById") public User getUserById(String id){ HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); String herderId = request.getHeader("ID_Test"); //测试是否传递请求头 System.out.println(herderId); User user = userService.getUserById(id); return user; } }
最后文章结束。。。。。。。。新手可以试试!