美文网首页
RestTemplate 使用

RestTemplate 使用

作者: Hogwarts1024 | 来源:发表于2018-12-13 23:12 被阅读0次

    在RestTemplate中,对GET请求有以下两种方法

    第一种是getForEntiy函数,返回的是ResponseEntity

    
        RestTemplate restTemplate = new RestTemplate();
        ResponseEntity<String> responseEntity = restTemplate.getForEntity("http://service/user?name={1}",  String.class, "username");
        String body = responseEntity.getBody();
        
    

    如果希望返回的body是个User对象,也可以这样实现:

    
        RestTemplate restTemplate = new RestTemplate();
        ResponseEntity<User> responseEntity = restTemplate.getForEntity("http://service/user?name={1}",  User.class, "username");
        User body = responseEntity.getBody(); 
        
    

    getForEntiy函数共三种重载:

    1. getForEntity(String url, Class responseType, Object... urlVariables), 就是上面的这种方式

    2. getForEntity(String url, Class responseType, Map urlVariables)

    
        RestTemplate restTemplate = new RestTemplate();
        Map<String, String> params = new HashMap<>();
        params.put("name", "username");
        ResponseEntity<String> responseEntity = restTemplate.getForEntity("http://service/user?name={name}",  String.class, params);
        
    

    注意map的key要和参数中占位符相同

    1. getForEntity(URI uri, Class responseType)
    
        RestTemplate restTemplate = new RestTemplate();
        UriComponents uriConponents = UriComponentsBuilder.fromUriString("http://service/user?name={name}").build().expand("username").encode();
        URI uri = uriConponents.toUri();
        ResponseEntity<String> responseEntity = restTemplate.getForEntity(uri, String.class);
    
    
    

    第二种是getForObject函数, 可以看作是对getForEntity进一步封装

    
        RestTemplate restTemplate = new RestTemplate();
        //注意参数中是uri不是url
        String body = restTemplate.getForObject(uri, String.class);
    
    

    返回User对象:

    
        RestTemplate restTemplate = new RestTemplate();
        User body = restTemplate.getForObject(uri, User.class);
    
    

    该方法也是三种重载参照getForEntity

    此外,RestTemplate的POST方法也分为postForEntity和postForObject,各有三种重载,使用方法和GET方法基本一一对应

    相关文章

      网友评论

          本文标题:RestTemplate 使用

          本文链接:https://www.haomeiwen.com/subject/vcbihqtx.html