【问题标题】:RestTemplate: returning a List of EntitiesRestTemplate:返回实体列表
【发布时间】:2018-11-05 12:59:44
【问题描述】:

有一个 RestFull 方法可以返回一个菜单对象列表

public ResponseEntity<List<Menu>> getMenus() {
..
}

但我不知道如何从 RestTemplate 中获取它们,从 ResponseEntity 获取类>

ResponseEntity<List<Menu>> response = restTemplate
                  .exchange("http://127.0.0.1:8080/elcor/api/users/1/menus", HttpMethod.GET, entity,  ResponseEntity<List<Menu>>.getClass());

【问题讨论】:

    标签: rest spring-mvc spring-boot resttemplate restful-architecture


    【解决方案1】:

    我一直在尝试提出一些通用方法来封装这些功能并在我当前的项目中使用它。 最后我发现了如何做到这一点。

    public static <T> List<T> getForList(RestTemplate restTemplate, String url, Class<T> cls, Object... uriVariables) {
        ObjectMapper mapper = new ObjectMapper();
        CollectionType type = mapper.getTypeFactory().constructCollectionType(List.class, cls);
        return restTemplate.<List<T>>exchange(url, HttpMethod.GET, null,
                    ParameterizedTypeReference.forType(type), uriVariables)
            .getBody();
    }
    

    【讨论】:

      【解决方案2】:

      试试这个,它对我在 Spring 中使用 RestTemplate 获取对象列表很有用

          RestTemplate restTemplate = new RestTemplate();
          try {
              ResponseEntity<List<Claim>> claimResponse = restTemplate.exchange(
                      uri, 
                      HttpMethod.GET,
                      null,
                      new ParameterizedTypeReference<List<Claim>>() {});
              if(claimResponse != null && claimResponse.hasBody()){
                  claims = claimResponse.getBody();
              }
          } catch (RestClientException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          } 
      

      【讨论】:

        【解决方案3】:

        尝试使用ParameterizedTypeReference

        ResponseEntity<List<Menu>> response = restTemplate
               .exchange("URI", HttpMethod.GET, entity,  new ParameterizedTypeReference<List<Menu>>() {
         });
        

        【讨论】:

        • 上述方法中的实体是什么?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-19
        • 1970-01-01
        • 1970-01-01
        • 2013-11-26
        相关资源
        最近更新 更多