restTemplate

restTemplate是啥

通常情况下,在java代码里访问restful接口时,一般是使用HttpClient或者自己封装一个HttpUtils来实现,实现同样的功能,这种方式比较繁琐。spring提供了一个简单的类来处理这个操作,就是org.springframework.web.client.RestTemplate

一个例子

  • 简单的接口

    1
    2
    3
    4
    5
    6
    7
    8
    9
    @RestController
    @RequestMapping("/rest")
    public class RestTestController {
    @RequestMapping("/demo")
    public ResData demo(@RequestBody RequestBean requestBean) {
    System.out.println(requestBean);
    return ResDataUtils.success("success", "data", "extra");
    }
    }
  • 客户端访问

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @Test
    public void testRestTemplate() throws Exception {
    String url = "http://localhost:8081/rest/demo";
    RequestBean requestBean = new RequestBean();
    requestBean.setParam("param");
    requestBean.setParam2("param2");
    RestTemplate restTemplate = new RestTemplate();
    ResData resData = restTemplate.postForObject(url, requestBean, ResData.class);
    System.out.println(resData);
    }

    上面只是一个简单的例子,其中调用RestTemplatepostForObject方法,主要参数有urlrequestresponseType 默认转换方式是json。因为RestTemplate 是rest风格,所有会支持getpostputdelete四种请求方式。具体可以参考官方的api RestTemplate