RestTemplate使用
简介
RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。
入门
导入坐标
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
把下面的代码放入启动类中
public RestTemplate restTemplate() {
return new RestTemplate();
}
创建controller 调用服务
@RestController
@RequestMapping("/rest")
public class RestTempController {
// 从Spring的容器中获取restTemplate
@Autowired
private RestTemplate restTemplate;
}
发送get请求
@RestController
@RequestMapping("/rest")
public class RestTempController {
// 从Spring的容器中获取restTemplate
@Autowired
private RestTemplate restTemplate;
@GetMapping
public ResponseEntity<String> findByPage(){
/**
* 返回值是string类型
* @RestController = @@Controller + @ResponseBody
* responsebody 转成json格式 的
* 所以返回值是 string 类型
*/
ResponseEntity<String> entity = restTemplate.getForEntity("http://192.168.83.34:8088/admin?page=1&rows=3", String.class);
System.out.println("状态码:"+entity.getStatusCode());
System.out.println("响应体"+entity.getBody());
return ResponseEntity.ok(entity.getBody());
}
}
成功获取返回值
post请求
@GetMapping("/test")
public ResponseEntity<String> page() {
PageRequest pageRequest = new PageRequest();
pageRequest.setPage(1);
pageRequest.setRows(2);
ResponseEntity<String> entity = restTemplate.postForEntity("http://192.168.83.184:8090/emp", pageRequest, String.class);
System.out.println(entity.getBody());
return entity;
}
返回值
注意明显可以看到返回的数据乱码了 !
这时候我们需要在注入resttemp 地方加入 以下代码
restTemplate.getMessageConverters().add(1, new StringHttpMessageConverter(Charset.forName("UTF-8")));
然后我们重启服务,再次访问
这时就没问题了 继续put请求
@GetMapping("/put")
public ResponseEntity<String> put() {
Emp emp = new Emp();
emp.setId(1);
emp.setName("123");
restTemplate.put("http://192.168.83.184:8090/emp",emp);
return ResponseEntity.ok("ok");
}
del请求
@GetMapping("/del")
public ResponseEntity<String> del() {
restTemplate.delete("http://192.168.83.34:8088/admin/49");
return ResponseEntity.ok("ok!");
}
响应ok
记得微笑鸭!