1 Pom文件中导入所需依赖,以boot项目为例
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.33</version>
</dependency>
RestTemplate依赖在starter-web内,fastjson依赖Post方法会用到;
2 后端发起Get请求Demo
@Service
public class RestTemp {
@Autowired
private RestTemplate restTemplate;
public void doGet(){
String url = "http://localhost:8080/testGet/{name}?id={id}"; //模拟第三方API
HashMap<String, Object> map = new HashMap<>();
map.put("name","张三");
map.put("id","666");
ResponseEntity<String> forEntity = restTemplate.getForEntity(url, String.class, map);
System.out.println(forEntity.getHeaders()); // [content-type xxxxx]
System.out.println(forEntity.getBody()); // "xxxx"
System.out.println(forEntity.getStatusCode()); // 200 OK
System.out.println(forEntity.getStatusCodeValue()); // 200
}
}
3 后端接收Get请求的Controller Demo
@RequestMapping
@RestController
public class TestController {
@GetMapping("/testGet/{name}")
public String getMethod(@PathVariable("name")String name,@RequestParam("id") Integer id){
System.out.println("getMethod接口访问成功"+id+"----"+name);
return "成功了~";
}
}
这里注意@PathVariable和@RequestParam两个注解的使用区别;
4 后端发起Post请求Demo
@Service
public class RestTemp {
@Autowired
private RestTemplate restTemplate;
/**
以返回值为一个User对象为例,该对象有name和age属性,自己创建User实体类
*/
public User doPost() throws URISyntaxException {
URI uri = new URI("http://localhost:8080/testPost");//模拟第三方API
HttpHeaders headers = new HttpHeaders();
headers.set("Accept-Charset", "UTF-8");
headers.set("Content-Type", "application/json; charset=utf-8");//设置请求头为json格式
MultiValueMap<String, String> map = new LinkedMultiValueMap<>();//添加参数,HttpEntity里面的参数是MultiValueMap类型
map.add("name","richlu");
map.add("id", "666");
HttpEntity<Object> requestEntity = new HttpEntity<>(map, headers);
String s = restTemplate.postForObject(uri, requestEntity, String.class);
JSONObject jsonObject = JSON.parseObject(s);
String name = jsonObject.getString("name");
Integer age = (Integer)jsonObject.get("age");
User user = new User(name, age);
return user;
}
}
4 后端接受Post请求的Controller Demo
@RequestMapping
@RestController
public class TestController {
@PostMapping ("/testPost")
public User postMethod(@RequestBody Object obj){
System.out.println("postMethod接口访问成功");
System.out.println(obj);
User user = new User();
user.setName("张三");
user.setAge(13);
return user;
}
}