说明:本文章只是快速入手,底层实现可以查看源码!同时只以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;
}
}
最后文章结束。。。。。。。。新手可以试试!