RestTemplate是spring-web-xxx.jar包中提供的Http协议实现类,与之前学习的HttpClient功能类似。也就是说导入spring-boot-starter-web的项目可以直接使用RestTemplate。
在该类中主要针对6类请求方式封装的方法。
调用方代码
//map传参
@RequestMapping("/demo1")
public void testForMap(@RequestParam(value = "name") String name,@RequestParam(value = "age") String age){
System.out.println("name+age = " + name + age);
}
//restful风格传参
@RequestMapping("/demo2/{name}/{age}")
public void testForRestFul(@PathVariable String name, @PathVariable String age){
System.out.println("name+age = " + name + age);
}
//不定项参数
@RequestMapping("/demo3")
public String demo2(String name,int age){
return "name:"+name+",age:"+age;
}
@Test
void testRestForMap(){
RestTemplate restTemplate = new RestTemplate();
Map<String, String> map = new HashMap<>();
map.put("name","zs");
map.put("age","18");
String forObject = restTemplate.getForObject("http://localhost:8080/demo1?name={name}&age={age}", String.class, map);
System.out.println("forObject = " + forObject);
}
@Test
void testRestForRestful(){
RestTemplate restTemplate = new RestTemplate();
String forObject = restTemplate.getForObject("http://localhost:8080/demo2/cxx/29", String.class);
System.out.println("forObject = " + forObject);
}
//不定项参数
@Test
void testGetForObjectWithParam(){
RestTemplate restTemplate = new RestTemplate();
String result = restTemplate.getForObject("http://localhost:8080/demo3?age={1}&name={2}", String.class, 123, "张三");
System.out.println(result);
}